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

ОГЭ. Вопрос 06

Задание 6. Условия в программе

Программа получает числа, проверяет условие и печатает один из двух ответов. Нужно определить, сколько раз получится нужный ответ, или найти значение неизвестного параметра. Научимся проверять условия по таблице, а подходящие значения параметра — отмечать на числовой оси.

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.

  1. Уточни, какой вывод нужен: YES или NO.
  2. Запиши, при каком условии получается этот вывод.
  3. Сначала проверь часть условия без A. У некоторых пар ответ уже определён.
  4. Для остальных пар найди ограничения на A. При сравнении с одной переменной удобно расположить её значения по возрастанию.
  5. Покажи подходящий промежуток на числовой оси параметра A.
  6. Отметь целые точки и выбери то, что спрашивают: наименьшее значение, наибольшее или количество.

Повторяющиеся значения сохраняй: одинаковые числа могут относиться к разным запускам.

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.

6 входит 9 не входит A 4 5 6 7 8 9 10 Подходящие целые значения: 6, 7, 8 Берём самую правую целую точку: A = 8

Закрашенный кружок на границе означает, что это число разрешено. Пустой кружок означает, что сама граница не подходит.

В промежутке есть и дробные числа, например 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 не входит 8 входит A 4 5 6 7 8 9 Подходящие целые значения: 6, 7, 8 Берём самую левую целую точку: A = 6

Число 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.

Печать