Тип 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 раз.

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

3. На чём можно ошибиться:

  • Строгость знаков: Путаница между > и ≥ — самая частая причина ошибок.
  • Вопрос задачи: Всегда перепроверяйте в конце, что нужно посчитать: YES или NO; наибольший параметр или наименьший.

Перейти к практике по заданию...