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