Статья Автор: Деникина Н.В., Деникин А.В.

ОГЭ - вопрос № 6. Задание с параметром. Разбор

Задача

Требуется подобрать целое А, чтобы программа выдала ровно X раз YES или NO среди заданных запусков.

# Ввод строго построчно (в столбик)
s = int(input())
t = int(input())
A = int(input())
if (s > A) or (t > 12):
    print("YES")
else:
    print("NO")

9 запусков (s, t): (13,2), (11,12), (-12,12), (2,-2), (-10,-10), (6,-5), (2,8), (9,10), (1,13)

Схема стратегии 

(s > A) or (t > 12) разделяем по t > 12 t > 12 — всегда YES t ≤ 12 — зависит от A NO ⇔ s ≤ A и t ≤ 12 YES (фиксируем) NO (от A) YES (от A)

Сначала посчитайте, сколько запусков уходит в «всегда YES», затем подбирайте А по оставшимся строкам.

Алгоритм решения

1) отделим «всегда YES» по части, не зависящей от А

В нашем случае это только одна пара: (1,13)

2) затем найдем граничное А, которое делает нужное число YES/NO через условие s > A (и t ≤ 12 - это все оставшиеся пары, не попавшие в пункт 1)
Допустим нам надо определить все значения А, при которых будет выводиться YES 5 раз (или NO 4 раза при 9 указанных запусках - это однотипое условие. В случае, если нужно найти количество запусков, чтобы выводилось NO, иногда лучше найти количество запусков для YES и потом из общего числа запусков отнять количество запусков YES)
Отметим на числовой оси все точки s, используемые при запусках. Одна пара чисел выдает YES при t > 12. Поэтому отмечаем все оставшиеся пары (отмечаем только значения s). Нам нужно найти 4 оставшихся запуска, при которых 

Нам нужно, чтобы условие s > A сработало в 4-х случаях:
то есть нам нужно, чтобы выполнялись условия: 6 > A, 9 > A, 11 > A, 13 > A,
но при этом, чтобы не выполнилось 2 > A, то есть значение А должно быть в диапазоне: 2 <= А < 6

Ответ: значения A = [2, 3, 4, 5] - всего 4 значения. Минимальное 2, максимальное 5,

Печать