ЕГЭ информатика 15 задание разбор, теория, как решать.
ЕГЭ Информатика — Задание №15: Логические выражения
Задание 15 проверяет умение анализировать логические выражения, определять их истинность и подбирать такие значения переменных, при которых выражение становится тождественно истинным (всегда равно 1).
Задачи формулируются на языке логики, но решаются с помощью простых переборов в Python.
Во всех случаях нужно проверить, при каких значениях переменных (или отрезков) выражение не даёт ложь (0).
1. Основная теория
В заданиях используются логические операции:
¬A— отрицание (НЕ) →not AA ∧ B— конъюнкция (И) →A and BA ∨ B— дизъюнкция (ИЛИ) →A or BA → B— импликация (ЕСЛИ A, ТО B) →(not A) or Bили корочеA <= B
В Python можно записывать любое логическое выражение,
и оно будет вычисляться как истина (1) или ложь (0).
2. Тип 1 — Неравенства (арифметические условия)
Необходимо найти наименьшее или наибольшее число A, при котором логическое выражение истинно для всех положительных x и y.
Пример 1 (СтатГрад 23.10.2025):
|
1 2 |
(y > A) ∨ (152 ≠ 2y + 3x) ∨ (A < x) |
Решение на Python:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
for A in range(0, 1000): ok = True for x in range(1, 500): for y in range(1, 500): f = (y > A) or (152 != 2*y + 3*x) or (A < x) if not f: ok = False break if not ok: break if ok: print(A) |
Ответ: 30
Пример 2 (Резерв 19.06.2025):
|
1 2 |
((x < A) ∧ (y < 3A)) ∨ (2x + y > 128) |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
for A in range(1, 500): # ищем наименьшее A ok = True for x in range(1, 500): for y in range(1, 500): f = ((x < A) and (y < 3*A)) or (2*x + y > 128) if not f: ok = False break if not ok: break if ok: print(A) break |
Ответ: 64
3. Тип 2 — Делимость (оператор ДЕЛ)
В таких задачах используется запись ДЕЛ(x, m), что означает «число x делится на m без остатка».
В Python это записывается как x % m == 0.
Пример (пересдача 03.07.2025):
|
1 2 |
ДЕЛ(x,128) → (¬ДЕЛ(x,A) → ¬ДЕЛ(x,80)) |
|
1 2 3 4 5 6 7 8 9 10 |
for A in range(1, 1000): ok = True for x in range(1, 1000): f = (x % 128 == 0) <= ((x % A != 0) <= (x % 80 != 0)) if not f: ok = False break if ok: print(A) |
Ответ: 640
Здесь выражение читается как:
«если x делится на 128, то из того, что x не делится на A, следует, что x не делится на 80».
Наибольшее значение A, при котором это условие выполняется для всех x, равно 640.
4. Тип 3 — Смешанные условия
Иногда встречаются выражения, содержащие и делимость, и неравенства.
Решение полностью аналогично: проверяются все возможные x, y (и иногда z).
Пример:
|
1 2 |
(x % 6 == 0) → ((x % A != 0) → (x % 4 != 0)) |
|
1 2 3 4 5 6 7 8 9 10 11 |
for A in range(1, 500): ok = True for x in range(1, 2000): f = (x % 6 == 0) <= ((x % A != 0) <= (x % 4 != 0)) if not f: ok = False break if ok: print(A) break |
5. Тип 4 — Отрезки (множества чисел на прямой)
В этих задачах даны отрезки P, Q, A.
Нужно определить минимальную или максимальную длину отрезка A, при которой логическое выражение истинно при любом x.
Чаще всего выражение имеет вид:
|
1 2 |
(x ∈ P) → (((x ∈ Q) ∧ ¬(x ∈ A)) → ¬(x ∈ P)) |
Пример (Демонстрационный вариант ЕГЭ 2026):
Даны P = [25; 64] и Q = [40; 115].
Найти минимальную длину отрезка A.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
P1, P2 = 25, 64 Q1, Q2 = 40, 115 def inside(x, a, b): return a <= x <= b best = 10**9 for a in range(0, 201): for b in range(a, 201): ok = True for x in range(0, 201): f = (not inside(x, P1, P2)) or \ ((not (inside(x, Q1, Q2) and not inside(x, a, b))) or \ (not inside(x, P1, P2))) if not f: ok = False break if ok: best = min(best, b - a) print(best) |
Ответ: 24
Минимальная длина отрезка A равна длине пересечения отрезков P и Q, так как только в их общей части выражение может нарушаться.
6. Универсальные советы для решения №15
- Если требуется «для всех x» — нужно проверить все x в разумном диапазоне.
- Если указано «наименьшее A» — начинаем перебор снизу.
- Если указано «наибольшее A» — начинаем перебор сверху или запоминаем последнее подходящее значение.
- Импликацию удобно записывать как
P <= Q. - Для отрезков используйте проверку
a <= x <= b. - Обычно диапазона
1..1000для x и y вполне достаточно.
7. Итог
Логические задания №15 можно решать полностью алгоритмически.
Достаточно уметь записывать формулу в виде Python-выражения и проверять, при каких параметрах она остаётся истинной.
Систематический перебор всех возможных значений — надёжный способ для любого типа таких задач.