Программа получает числа, проверяет условие и печатает один из двух ответов. Нужно определить, сколько раз получится нужный ответ, или найти значение неизвестного параметра. Научимся проверять условия по таблице, а подходящие значения параметра — отмечать на числовой оси.
1. Как читать программу
Условие — это проверка, результат которой бывает истинным или ложным: «да, выполняется» или «нет, не выполняется».
s = int(input())
t = int(input())
if s > 5:
print("YES")
else:
print("NO")
input() читает введённое значение, а int(...) преобразует его в целое число. Первое число записывается в s, второе — в t.
if означает «если». Если s больше 5, выполняется строка с выводом YES.
else означает «иначе». Если условие не выполнено, выводится NO.
print(...) выводит указанное значение. Отступы показывают, какая строка относится к каждой ветке.
В этой программе t не влияет на ответ: число прочитали, но в условии его не используют.
2. И, ИЛИ, НЕ
Несколько проверок можно соединить в одно условие.
И — and.
Всё условие истинно, только если выполнены обе проверки.
ИЛИ — or.
Достаточно хотя бы одной выполненной проверки. Если выполнены обе — условие тоже истинно.
НЕ — not.
Меняет результат на противоположный: истину превращает в ложь, а ложь — в истину.
| Первая |
Вторая |
И |
ИЛИ |
| Нет |
Нет |
Нет |
Нет |
| Нет |
Да |
Нет |
Да |
| Да |
Нет |
Нет |
Да |
| Да |
Да |
Да |
Да |
В таблице «Да» и «Нет» — результаты проверок. Что именно будет напечатано, зависит от команд в ветках программы.
3. Считаем результаты запусков
Учебный пример. Программа получает два целых числа:
s = int(input())
t = int(input())
if (s > 5) and (t < 3):
print("YES")
else:
print("NO")
Программу запускают отдельно для каждой пары: (6, 2); (5, 2); (8, 3); (9, −1); (−2, 0); (7, 1). Первое число пары — s, второе — t.
Сколько раз программа напечатает YES?
Шаг 1. Переводим условие на обычный язык.
Для YES нужно одновременно выполнить два требования: s больше 5 и t меньше 3.
Шаг 2. Проверяем пары по таблице.
Для пары (6, 2) обе проверки истинны: 6 > 5 и 2 < 3. Значит, получаем YES. Для пары (5, 2) первая проверка ложна: 5 не больше 5. При И этого достаточно для NO.
| Пара (s, t) |
s > 5 |
t < 3 |
Вывод |
| (6, 2) |
Да |
Да |
YES |
| (5, 2) |
Нет |
Да |
NO |
| (8, 3) |
Да |
Нет |
NO |
| (9, −1) |
Да |
Да |
YES |
| (−2, 0) |
Нет |
Да |
NO |
| (7, 1) |
Да |
Да |
YES |
Шаг 3. Считаем нужные ответы.
YES получился у трёх пар: (6, 2), (9, −1), (7, 1).
Обрати внимание на границы: 5 > 5 — ложь, 3 < 3 — ложь. Строгое сравнение не допускает равенства.
Ответ: 3.
4. Когда удобнее искать NO
Если в ветке if печатается YES, а в else — NO, то NO означает, что всё условие ложно.
В условии ИЛИ:
(s > 5) or (t < 3)
Для NO должны не выполниться обе проверки:
s ≤ 5 И t ≥ 3.
В условии И:
(s > 5) and (t < 3)
Для NO достаточно, чтобы не выполнилась хотя бы одна проверка:
s ≤ 5 ИЛИ t ≥ 3.
При отрицании > превращается в ≤, а < превращается в ≥. Равенство нельзя потерять.
5. Если неизвестен параметр
Параметр A — число, которое нужно подобрать. Для всех перечисленных запусков берут одно и то же значение A.
- Уточни, какой вывод нужен: YES или NO.
- Запиши, при каком условии получается этот вывод.
- Сначала проверь часть условия без A. У некоторых пар ответ уже определён.
- Для остальных пар найди ограничения на A. При сравнении с одной переменной удобно расположить её значения по возрастанию.
- Покажи подходящий промежуток на числовой оси параметра A.
- Отметь целые точки и выбери то, что спрашивают: наименьшее значение, наибольшее или количество.
Повторяющиеся значения сохраняй: одинаковые числа могут относиться к разным запускам.
6. Ищем параметр на числовой оси
Пример из проекта демоверсии ОГЭ 2026 ФИПИ. Программа получает целые числа s, t и A:
s = int(input())
t = int(input())
A = int(input())
if (s > A) or (t > 12):
print("YES")
else:
print("NO")
Для девяти запусков заданы пары (s, t): (13, 2); (11, 12); (−12, 12); (2, −2); (−10, −10); (6, −5); (2, 8); (9, 10); (1, 13). Значение A одинаково во всех запусках.
Найди наибольшее целое A, при котором программа напечатает NO ровно пять раз.
Шаг 1. Когда получится NO?
В условии стоит ИЛИ. Поэтому для NO должны быть ложными обе проверки: s > A и t > 12.
NO получается, когда s ≤ A И t ≤ 12.
Шаг 2. Сначала проверяем часть без A.
Пара (1, 13) всегда даёт YES, потому что 13 > 12. Она не сможет дать NO ни при каком A.
У остальных восьми пар выполнено t ≤ 12. Для них осталось проверить только s ≤ A. Значение t = 12 подходит: сравнение 12 > 12 ложно.
Шаг 3. Располагаем оставшиеся значения s по возрастанию.
| Место |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
| s |
−12 |
−10 |
2 |
2 |
6 |
9 |
11 |
13 |
Две двойки сохраняем: это два разных запуска. Нам нужны ровно пять значений, для которых s ≤ A.
Шаг 4. Находим две границы для A.
Пятое число должно подойти
Пятое значение s равно 6. Чтобы выполнялось s ≤ A, нужно:
A ≥ 6
Шестое число не должно подойти
Шестое значение s равно 9. Чтобы оно ещё не удовлетворяло s ≤ A, нужно:
A < 9
Объединяем требования: 6 ≤ A < 9. Отмечаем этот промежуток на оси параметра A.
Закрашенный кружок на границе означает, что это число разрешено. Пустой кружок означает, что сама граница не подходит.
В промежутке есть и дробные числа, например 8,5. Но по условию A — целое. Поэтому выбираем только целые точки: 6, 7 и 8.
Шаг 5. Проверяем ответ и соседнюю границу.
При A = 8 получаем NO для пяти пар: (−12, 12), (2, −2), (−10, −10), (6, −5), (2, 8). Все они удовлетворяют s ≤ 8 и t ≤ 12. Остальные четыре пары дают YES.
При A = 9 добавится пара (9, 10): ответов NO станет шесть. При дальнейшем увеличении A их количество уже не уменьшится.
Ответ: 8.
Как читать ответ по числовой оси
Наименьшее целое A — самая левая подходящая целая точка: 6.
Наибольшее целое A — самая правая подходящая целая точка: 8.
Количество целых A — число подходящих целых точек: 3.
7. Что важно запомнить
- Не путай И и ИЛИ. Для И нужны обе истинные проверки, для ИЛИ достаточно одной.
- Смотри, что печатает каждая ветка. В другой программе под if может стоять NO, а под else — YES.
- Проверяй равенство на границе. Условия s > 5 и s ≥ 5 различаются при s = 5. В Python знак ≥ записывается как
>=, а знак ≤ — как <=.
- Не переставляй числа в паре. В записи (s, t) первое число относится к s, второе — к t.
- Считай запуски, а не отдельные истинные сравнения. Даже если при ИЛИ выполнены обе проверки, программа печатает ответ только один раз.
- Учитывай повторяющиеся значения. Если границу одновременно пересекают два запуска, количество нужных ответов меняется сразу на два. Поэтому получить любое заданное количество удаётся не всегда.
- На оси отмечай значения параметра A. Сначала найди ограничения на A, затем выбери подходящие целые точки.
- Отвечай именно на вопрос задачи. Для значений 6, 7, 8 наименьшее — 6, наибольшее — 8, а количество — 3.
Проверь себя: сколько ответов?
Программа получает два целых числа:
s = int(input())
t = int(input())
if (s > 4) or (t < 0):
print("YES")
else:
print("NO")
Пары (s, t): (4, 0); (5, 0); (−2, −1); (7, −3); (1, 2); (4, −2).
Сколько раз будет напечатано NO?
Ответ и решение
Для NO обе проверки должны быть ложными: s ≤ 4 И t ≥ 0.
| Пара (s, t) |
s > 4 |
t < 0 |
Вывод |
| (4, 0) |
Нет |
Нет |
NO |
| (5, 0) |
Да |
Нет |
YES |
| (−2, −1) |
Нет |
Да |
YES |
| (7, −3) |
Да |
Да |
YES |
| (1, 2) |
Нет |
Нет |
NO |
| (4, −2) |
Нет |
Да |
YES |
Пара (7, −3) даёт один ответ YES, хотя истинны обе проверки.
Получилось два ответа NO. Ответ: 2.
Проверь себя: найди параметр
Программа получает целые числа s, t и A:
s = int(input())
t = int(input())
A = int(input())
if (s < A) and (t > 0):
print("YES")
else:
print("NO")
Пары (s, t): (−3, 1); (2, 4); (5, 2); (8, 3); (1, 0); (10, −2). Значение A одинаково во всех запусках.
Найди наименьшее целое A, при котором программа напечатает YES ровно три раза.
Ответ и решение на числовой оси
Для YES нужны оба условия: s < A и t > 0.
Пары (1, 0) и (10, −2) всегда дают NO: у них не выполнено t > 0.
У остальных пар значения s: −3, 2, 5, 8. Нужно, чтобы первые три числа были меньше A, а четвёртое — ещё нет.
Третье число должно подойти
Третье значение s равно 5. Для выполнения s < A нужно:
A > 5
Четвёртое число не должно подойти
Четвёртое значение s равно 8. Чтобы сравнение s < A было ложным, нужно:
A ≤ 8
Получаем 5 < A ≤ 8. Отмечаем этот промежуток на оси параметра A.
Число 5 не входит: при A = 5 сравнение 5 < A ложно, поэтому YES получится только два раза.
Число 8 входит: при A = 8 третье значение 5 подходит, а четвёртое значение 8 ещё не подходит, ведь 8 < 8 — ложь.
Самая левая подходящая целая точка — 6.
Проверка при A = 6:
(−3, 1), (2, 4), (5, 2) → YES.
(8, 3), (1, 0), (10, −2) → NO.
Получилось ровно три ответа YES. Ответ: 6.