Что проверяет задание
Задание 6 - анализ программы с условием. Программа на пяти языках читает два числа (s и t, иногда ещё параметр A) и печатает YES, если условие истинно, иначе NO. Дано несколько запусков (пары чисел). Нужно посчитать, сколько раз программа напечатает YES или NO, или подобрать параметр A.
Анализ программы с условием
Программа дана на пяти языках, все варианты делают одно и то же. Достаточно прочитать один, например алгоритмический язык:
алг
нач
цел s, t, A
ввод s
ввод t
ввод A
если s > A или t > 11
то вывод "YES"
иначе вывод "NO"
все
кон
Первое число пары - это s, второе - t (в том порядке, в каком они вводятся). Связки:
and(И,&&) - нужны оба условия;or(ИЛИ,||) - хватит одного;not(НЕ) - отрицание.
Подсчёт YES и NO
Подставьте каждую пару в условие и запишите результат. Например, для условия (s > 10) or (t > 11):
- (-9, 11): -9 > 10 ложно, 11 > 11 ложно - NO;
- (5, 12): 12 > 11 истинно - YES.
Подбор параметра A
Если в условии есть A, подставьте пару - останется условие только на A.
Для (s > A) or (t > 11):
- пара (5, 12): t > 11 истинно, YES при любом A;
- пара (7, -9): t > 11 ложно, YES только при 7 > A, то есть A < 7 (A ≤ 6).
Дальше смотрите, как меняется число YES при изменении A. Каждая пара даёт порог: при A меньше порога она даёт YES, иначе NO. Отсортируйте пороги и найдите промежуток A, где число YES (или NO) ровно такое, как требуется. Из него берите наименьшее, наибольшее или количество целых значений - как спрашивают.
Пример: YES ровно шесть раз при 2 ≤ A ≤ 6 - это 5 целых значений.
Разбор задачи из демоварианта
Задача. Программа (на всех языках одна и та же) читает числа s, t и параметр A и печатает YES, если s > 10 или t > A, иначе NO. Было проведено 9 запусков с парами (s, t):
(1, 2); (11, 2); (1, 12); (11, 12); (-11, -12); (-11, 12); (-12, 11); (10, 10); (10, 5).
Укажите целое значение параметра A, при котором программа напечатает «YES» пять раз.
Решение.
- Условие s > 10 выполняется в парах (11, 2) и (11, 12) - они дают YES при любом A. Это уже 2 раза.
- В остальных семи парах s ≤ 10, YES будет только при t > A. Значения t в этих парах: 2, 12, -12, 12, 11, 10, 5.
- Нужно ещё 3 раза YES, то есть ровно три значения t должны быть больше A. Расположим t по убыванию: 12, 12, 11, 10, 5, 2, -12.
- Три наибольших - 12, 12, 11 - должны быть больше A, а четвёртое, 10, - нет. Получаем 10 ≤ A < 11, то есть A = 10.
Проверка при A = 10: YES дают (11, 2), (11, 12), (1, 12), (-11, 12), (-12, 11) - ровно 5 раз.
Ответ: 10.
Типичные ошибки
- Перепутали строгое и нестрогое неравенство (s > A и s ≥ A дают разные границы).
- Перепутали порядок чисел в паре.
- Посчитали YES, а спрашивали NO.
