Откуда берётся YES или NO
Программа считывает числа s и t (иногда второе называют k) и проверяет выражение после if. Если выражение верно, выполняется первая ветка. Если неверно, выполняется else. Каждая пара — отдельный запуск: нельзя переносить результат предыдущей пары в следующую.
s = int(input())
t = int(input())
if s > 2 and t < 5:
print('YES')
else:
print('NO')
Например, для пары (5; 4) проверки 5 > 2 и 4 < 5 обе верны, значит печатается YES. Для (2; 4) первая проверка ложна (2 > 2 неверно), значит печатается NO.
Как читать условия
| Запись | Смысл | Пример |
|---|---|---|
| and / И | Должны выполниться обе части | 5 > 2 and 4 < 5 → истина |
| or / ИЛИ | Достаточно одной верной части | 11 < 9 or 6 < 9 → истина |
| not / НЕ | Меняет истину на ложь и наоборот | not (5 > 2) → ложь |
| % / mod | Остаток от деления | 18 % 5 = 3 |
| // / div | Целая часть от деления | 7 // 2 = 3 |
Строгие знаки > и < не включают границу: 2 > 2 ложно. Знаки >= и <= включают равенство. Сначала вычисляй арифметику, потом сравнивай числа, затем объединяй проверки словами and, or, not.
Девять подробных разборов
1. AND: обе проверки должны быть верны
Условие. Программа получает пары чисел; после проверки она печатает YES либо NO. Сколько запусков напечатают YES?
if s > 2 and t < 5:
print('YES')
else:
print('NO')Все входные пары: (-2; 3); (2; 5); (0; 3); (5; -3); (5; 4); (11; 4); (8; -6); (7; 3); (9; 1).
- Смотрим, что напечатано в первой ветке: YES. Поэтому нам нужны пары, для которых весь
ifистинен. andтребует сразу двух ответов «да»: s > 2 и t < 5. Для пары (5; −3) это 5 > 2 и −3 < 5, оба верны — YES. Для пары (2; 5) оба неверны — NO.- Отмечаем каждую из девяти строк отдельно, затем считаем YES в последнем столбце. Таких строк шесть.
| № | s | t | s > 2 | t < 5 | Вывод |
|---|---|---|---|---|---|
| 1 | -2 | 3 | нет | да | NO |
| 2 | 2 | 5 | нет | нет | NO |
| 3 | 0 | 3 | нет | да | NO |
| 4 | 5 | -3 | да | да | YES |
| 5 | 5 | 4 | да | да | YES |
| 6 | 11 | 4 | да | да | YES |
| 7 | 8 | -6 | да | да | YES |
| 8 | 7 | 3 | да | да | YES |
| 9 | 9 | 1 | да | да | YES |
2. OR: достаточно одной верной проверки
Условие. Программа получает пары чисел; после проверки она печатает YES либо NO. Сколько запусков напечатают YES?
if s < 9 or t < 9:
print('YES')
else:
print('NO')Все входные пары: (9; 9); (9; 10); (8; 5); (11; 6); (-11; 10); (-5; 9); (-10; 10); (4; 5); (8; 6).
- При
orвывод YES получится, если хотя бы одно из чисел меньше 9. Например, (11; 6): 11 < 9 — нет, 6 < 9 — да; одного «да» хватает. - Удобно сначала найти NO: это пары, у которых обе части ложны. У (9; 9) и (9; 10) оба числа не меньше 9; граница 9 в условие
< 9не входит. - Всего девять запусков, два из них дают NO. Поэтому YES дают 9 − 2 = 7 запусков. Таблица показывает ту же проверку по каждой паре.
| № | s | t | s < 9 | t < 9 | Вывод |
|---|---|---|---|---|---|
| 1 | 9 | 9 | нет | нет | NO |
| 2 | 9 | 10 | нет | нет | NO |
| 3 | 8 | 5 | да | да | YES |
| 4 | 11 | 6 | нет | да | YES |
| 5 | -11 | 10 | да | нет | YES |
| 6 | -5 | 9 | да | нет | YES |
| 7 | -10 | 10 | да | нет | YES |
| 8 | 4 | 5 | да | да | YES |
| 9 | 8 | 6 | да | да | YES |
3. Параметр A: ровно три ответа NO
Условие. Программа получает пары чисел; после проверки она печатает YES либо NO. Сколько целых значений A дадут ровно три ответа NO?
if s > 10 or t > A:
print('YES')
else:
print('NO')Все входные пары: (1; 2); (11; 2); (1; 12); (11; 12); (-11; -12); (-11; 12); (-12; 11); (10; 10); (10; 5).
- YES напечатается при
s > 10 or t > A. Для NO обе части должны быть ложны: s ≤ 10 и t ≤ A. Так мы получили условие для нужной надписи. - Пары (11; 2) и (11; 12) всегда дают YES: у них s = 11 > 10. У остальных семи пар NO появляется тогда, когда параметр A достигнет их значения t.
- Выписываем t только для этих семи пар и сортируем: −12, 2, 5, 10, 11, 12, 12. Чтобы сработали ровно первые три, нужно включить 5, но ещё не включать 10. Значит, 5 ≤ A < 10.
- Поскольку A целое, подходят 5, 6, 7, 8, 9 — всего пять значений. При A = 5 NO дают именно (−11; −12), (1; 2) и (10; 5).
| № | s | t | s ≤ 10? | Когда даст NO | Вывод |
|---|---|---|---|---|---|
| 1 | 1 | 2 | да | A ≥ 2 | кандидат |
| 2 | 11 | 2 | нет | никогда | всегда YES |
| 3 | 1 | 12 | да | A ≥ 12 | кандидат |
| 4 | 11 | 12 | нет | никогда | всегда YES |
| 5 | -11 | -12 | да | A ≥ -12 | кандидат |
| 6 | -11 | 12 | да | A ≥ 12 | кандидат |
| 7 | -12 | 11 | да | A ≥ 11 | кандидат |
| 8 | 10 | 10 | да | A ≥ 10 | кандидат |
| 9 | 10 | 5 | да | A ≥ 5 | кандидат |
4. Параметр A: найти наименьшее для восьми NO
Условие. Программа получает пары чисел; после проверки она печатает YES либо NO. Найди наименьшее целое A, при котором NO появится восемь раз.
if s > A or t > 12:
print('YES')
else:
print('NO')Все входные пары: (13; 2); (11; 12); (-12; 12); (2; -2); (-10; -10); (6; -5); (2; 8); (9; 10); (1; 13).
- Меняем обе части условия для первой ветки на противоположные: NO ⇔ s ≤ A и t ≤ 12. Ошибка здесь — заменить
orнаor; для отрицания «ИЛИ» требуется «И». - Пара (1; 13) всегда YES, так как 13 > 12. Остаётся ровно восемь пар с t ≤ 12. Чтобы все восемь стали NO, A должен быть не меньше каждого из их значений s.
- Среди этих s наибольшее 13 у пары (13; 2). Значит, необходимо A ≥ 13. При A = 12 эта пара ещё даст YES, а при A = 13 уже NO. Минимум — 13.
| № | s | t | t ≤ 12? | Когда даст NO |
|---|---|---|---|---|
| 1 | 13 | 2 | да | A ≥ 13 |
| 2 | 11 | 12 | да | A ≥ 11 |
| 3 | -12 | 12 | да | A ≥ -12 |
| 4 | 2 | -2 | да | A ≥ 2 |
| 5 | -10 | -10 | да | A ≥ -10 |
| 6 | 6 | -5 | да | A ≥ 6 |
| 7 | 2 | 8 | да | A ≥ 2 |
| 8 | 9 | 10 | да | A ≥ 9 |
| 9 | 1 | 13 | нет | никогда |
5. Параметр A: найти наименьшее для четырёх YES
Условие. Программа получает пары чисел; после проверки она печатает YES либо NO. Найди наименьшее целое A, при котором YES появится четыре раза.
if s > A or t > 12:
print('YES')
else:
print('NO')Все входные пары: (13; 2); (11; 12); (-12; 12); (2; -2); (-10; -10); (6; -5); (2; 8); (9; 10); (1; 13).
- В условии та же программа и те же девять пар, но теперь нужен ответ YES. Пара (1; 13) даёт YES при любом A за счёт
t > 12. Нужно ещё три YES среди оставшихся восьми пар. - У этих восьми пар t ≤ 12, поэтому всё решает
s > A. Сортируем их s по убыванию: 13, 11, 9, 6, 2, 2, −10, −12. Выше A должны оказаться ровно три числа: 13, 11 и 9. - Число 6 должно уже не проходить, значит A ≥ 6. Число 9 ещё должно проходить, значит A < 9. Целые варианты: 6, 7, 8. Наименьший — 6.
- Проверка при A = 6: YES дают s = 13, 11, 9 и отдельная пара (1; 13) по второму условию. Это ровно четыре. В таблице проверен каждый запуск.
| № | s | t | Вывод при A = 6 | Почему |
|---|---|---|---|---|
| 1 | 13 | 2 | YES | s > 6 |
| 2 | 11 | 12 | YES | s > 6 |
| 3 | -12 | 12 | NO | условие ложно |
| 4 | 2 | -2 | NO | условие ложно |
| 5 | -10 | -10 | NO | условие ложно |
| 6 | 6 | -5 | NO | условие ложно |
| 7 | 2 | 8 | NO | условие ложно |
| 8 | 9 | 10 | YES | s > 6 |
| 9 | 1 | 13 | YES | t > 12 |
6. Остаток от деления на 5
Условие. Программа получает пары чисел; после проверки она печатает YES либо NO. Второе число пары — k. Сколько запусков напечатают YES?
if s % 5 == k:
print('YES')
else:
print('NO')Все входные пары: (1; 2); (5; 0); (18; 3); (21; 1); (10; 2); (12; 1); (9; 4); (5; 5); (3; 3).
s % 5означает остаток при делении s на 5. Например, 18 = 5 × 3 + 3, значит 18 % 5 = 3. Это не результат обычного деления.- Для каждой строки сначала вычисляем остаток, затем сравниваем его с k. Пара (18; 3) даёт YES: 3 = 3. Пара (12; 1) даёт NO: 12 % 5 = 2, а 2 ≠ 1.
- Остаток при делении на 5 может быть только 0, 1, 2, 3, 4. Поэтому пара (5; 5) не подходит: 5 % 5 = 0. YES отмечен в пяти строках.
| № | s | k | s % 5 | Вывод |
|---|---|---|---|---|
| 1 | 1 | 2 | 1 | NO |
| 2 | 5 | 0 | 0 | YES |
| 3 | 18 | 3 | 3 | YES |
| 4 | 21 | 1 | 1 | YES |
| 5 | 10 | 2 | 0 | NO |
| 6 | 12 | 1 | 2 | NO |
| 7 | 9 | 4 | 4 | YES |
| 8 | 5 | 5 | 0 | NO |
| 9 | 3 | 3 | 3 | YES |
7. Целая часть от деления на 2
Условие. Программа получает пары чисел; после проверки она печатает ДА либо НЕТ. Второе число — k. Сколько запусков напечатают ДА?
if s // 2 == k:
print('ДА')
else:
print('НЕТ')Все входные пары: (1; 1); (8; 4); (14; 10); (20; 1); (7; 3); (10; 5); (10; 2); (4; 1); (1; 0).
//берёт целую часть частного. Для положительных чисел отбрасываем дробную часть: 7 // 2 = 3, потому что 7/2 = 3,5.- Сравниваем полученное число с k. У пары (7; 3) получается 3 = 3 — ДА. У пары (14; 10) получается 7 ≠ 10 — НЕТ.
- Для (1; 0) важно не округлять до 1: 1 // 2 = 0. Эта строка тоже даёт ДА. Итого четыре строки.
| № | s | k | s // 2 | Вывод |
|---|---|---|---|---|
| 1 | 1 | 1 | 0 | НЕТ |
| 2 | 8 | 4 | 4 | ДА |
| 3 | 14 | 10 | 7 | НЕТ |
| 4 | 20 | 1 | 10 | НЕТ |
| 5 | 7 | 3 | 3 | ДА |
| 6 | 10 | 5 | 5 | ДА |
| 7 | 10 | 2 | 5 | НЕТ |
| 8 | 4 | 1 | 2 | НЕТ |
| 9 | 1 | 0 | 0 | ДА |
8. Сравнение с выражением 2 × k
Условие. Программа получает пары чисел; после проверки она печатает ДА либо НЕТ. Второе число — k. Сколько запусков напечатают ДА?
if s >= 2 * k:
print('ДА')
else:
print('НЕТ')Все входные пары: (1; 2); (8; 4); (6; -12); (-5; -5); (3; 11); (-10; 12); (-10; -2); (4; 1); (2; 5).
- Сначала вычисляем 2 × k, потом сравниваем с s. Знак
≥включает равенство: (8; 4) даёт ДА, потому что 8 ≥ 2 × 4 = 8. - Не теряем знак при отрицательных k. Для (6; −12) значение 2 × k = −24, а 6 ≥ −24 верно. Для (−10; −2) 2 × k = −4, но −10 ≥ −4 неверно.
- После проверки девяти строк ДА получается четыре раза.
| № | s | k | 2 × k | Вывод |
|---|---|---|---|---|
| 1 | 1 | 2 | 4 | НЕТ |
| 2 | 8 | 4 | 8 | ДА |
| 3 | 6 | -12 | -24 | ДА |
| 4 | -5 | -5 | -10 | ДА |
| 5 | 3 | 11 | 22 | НЕТ |
| 6 | -10 | 12 | 24 | НЕТ |
| 7 | -10 | -2 | -4 | НЕТ |
| 8 | 4 | 1 | 2 | ДА |
| 9 | 2 | 5 | 10 | НЕТ |
9. NOT: переворачиваем результат AND
Условие. Программа получает пары чисел; после проверки она печатает YES либо NO. Сколько запусков напечатают YES?
if not ((s >= 5) and (t < 3)):
print('YES')
else:
print('NO')Все входные пары: (2; -2); (5; 3); (14; 1); (-12; 5); (5; -7); (10; 3); (8; 2); (3; 0); (23; 9).
- Сначала проверяем выражение внутри скобок: s ≥ 5 и t < 3. У пары (14; 1) обе части верны, внутренний результат — истина.
- Внешнее
notменяет истину на ложь. Поэтому (14; 1) получает NO, а (5; 3) получает YES: там t < 3 ложно, после отрицания всё условие становится истинным. - Проверяем все девять строк и считаем YES — шесть. Можно свериться с эквивалентной записью: s < 5 или t ≥ 3.
| № | s | t | s ≥ 5 | t < 3 | Вывод |
|---|---|---|---|---|---|
| 1 | 2 | -2 | нет | да | YES |
| 2 | 5 | 3 | да | нет | YES |
| 3 | 14 | 1 | да | да | NO |
| 4 | -12 | 5 | нет | нет | YES |
| 5 | 5 | -7 | да | да | NO |
| 6 | 10 | 3 | да | нет | YES |
| 7 | 8 | 2 | да | да | NO |
| 8 | 3 | 0 | нет | да | YES |
| 9 | 23 | 9 | да | нет | YES |
Шесть шагов для любого условия
- Найди строку
ifи запиши, что выводит истинная и ложная ветка. - Перепиши все пары входных чисел: каждая пара — отдельный запуск.
- Посчитай арифметику (
%,//, умножение), затем каждое сравнение. - Объедини результаты по правилу
and,orилиnot. - Если есть A, найди условие для нужной ветки и отсортируй значения порога. Учти одинаковые значения.
- Посчитай запуски или значения A — в зависимости от формулировки вопроса.
Пять упражнений с проверкой
Для каждого задания указан полный набор входных данных. После ошибки появится подсказка, а ответ можно исправить.
Решено: 0 из 5
1. Два условия AND
Если s > 2 and t < 5, программа выводит YES, иначе NO. Входные пары: (2; 5), (3; 4), (9; 7), (4; 0), (1; 2), (5; 5). Сколько раз выведется YES?
2. Одно из двух условий OR
Если s < 9 or t < 9, программа выводит YES, иначе NO. Пары: (9; 9), (10; 10), (8; 12), (12; 2), (0; 20), (7; 8). Сколько YES?
3. Найди наименьший параметр A
Если s > A or t > 12, программа выводит YES. Пары: (1; 13), (4; 2), (7; 10), (10; 5), (2; 14), (9; 1). Найди наименьшее целое A, при котором YES появится ровно четыре раза.
4. Остаток от деления
Если s % 5 == k, программа выводит YES. Пары (s; k): (18; 3), (12; 1), (5; 0), (5; 5), (9; 4). Сколько YES?
5. Отрицание NOT
Если not (s >= 5 and t < 3), программа выводит YES. Пары: (2; 0), (5; 2), (5; 3), (7; 1), (8; 4). Сколько YES?
Видео по заданию №6
Сверь свой способ проверки пар и подсчёта запусков с объяснением из материалов сайта.
Продолжи подготовку к ОГЭ
Теперь ты умеешь разбирать условие и подсчитывать выводы программы. Создай аккаунт, чтобы продолжить практику на сайте.
Создать бесплатный аккаунтПроверь себя
При AND достаточно одного верного сравнения?
Нет. Для AND верными должны быть обе части. Если одна ложна, программа пойдёт в else.
Почему при A = 9 в разборе №3 уже не три NO?
Пока t ≤ 9 только у значений −12, 2 и 5. Четвёртое значение t равно 10, оно добавится лишь при A = 10.
Можно ли остаток от деления на 5 получить равным 5?
Нет. Остаток бывает от 0 до 4. При s = 5 остаток равен 0.
Дальше изучи задание №7 про адреса в сети. Повтори задание №5 про исполнителя или открой демоверсию ОГЭ.
