№15 Логические выражения

Логические выражения для ЕГЭ по информатике (Задание 15)


Задания: | N15.Логические выражения. Битовые операции | N15.Логические выражения. Графики | | N15.Логические выражения. Отрезки | | N15.Логические выражения. Множества | N15.Логические выражения. Смешанные операции |


1. Основные понятия

Задание 15 ЕГЭ по информатике проверяет умение работать с логическими выражениями, содержащими параметр. Требуется найти значение параметра (обычно A), при котором выражение тождественно истинно или тождественно ложно для всех значений переменной.

Типичная формулировка: "Для какого наименьшего (наибольшего) натурального значения А формула тождественно истинна?"

Важно: Внимательно читать условие - от этого зависит область определения переменной:

  • "натуральное значение x" → range(1, ...)
  • "неотрицательное целое значение x" → range(0, ...)
  • "целое значение x" → обычно range(0, ...) или range(-1000, 1000)

2. Логические операции

Операция Обозначение Python Когда истинно
Отрицание (НЕ) ¬A, NOT A not A Когда A = 0
Конъюнкция (И) A ∧ B, A AND B A and B Только при A=1 и B=1
Дизъюнкция (ИЛИ) A ∨ B, A OR B A or B Когда хотя бы одно = 1
Импликация A → B A <= B или not A or B Ложь только при 1→0
Эквиваленция A ↔ B, A ≡ B A == B Когда значения одинаковы

Важно: В Python импликацию можно реализовать через оператор <=, так как False <= True = True, True <= False = False.


3. Преобразование логических выражений

3.1. Преобразование импликации

AB=¬ABA \to B = \neg A \vee B

В Python: not A or B или A <= B

Пример: ДЕЛ(x,26)ДЕЛ(x,13)=¬ДЕЛ(x,26)ДЕЛ(x,13)ДЕЛ(x,26) \to ДЕЛ(x,13) = \neg ДЕЛ(x,26) \vee ДЕЛ(x,13)

В Python: not Del(x, 26) or Del(x, 13)


3.2. Законы де Моргана

Закон Формула
Отрицание конъюнкции ¬(AB)=¬A¬B\neg(A \wedge B) = \neg A \vee \neg B
Отрицание дизъюнкции ¬(AB)=¬A¬B\neg(A \vee B) = \neg A \wedge \neg B

Пример: ¬(ДЕЛ(x,26)ДЕЛ(x,A))=¬ДЕЛ(x,26)¬ДЕЛ(x,A)\neg(ДЕЛ(x,26) \wedge ДЕЛ(x,A)) = \neg ДЕЛ(x,26) \vee \neg ДЕЛ(x,A)


3.3. Отрицание импликации

¬(AB)=A¬B\neg(A \to B) = A \wedge \neg B

Пример: ¬(ДЕЛ(x,26)ДЕЛ(x,13))=ДЕЛ(x,26)¬ДЕЛ(x,13)\neg(ДЕЛ(x,26) \to ДЕЛ(x,13)) = ДЕЛ(x,26) \wedge \neg ДЕЛ(x,13)


4. Общий алгоритм решения

Шаг 1: Внимательно прочитать условие

  • Определить область определения переменной (натуральное/неотрицательное/целое)
  • Выписать формулу
  • Определить, что нужно найти (наименьшее/наибольшее A)

Шаг 2: Написать код

  • Использовать вложенные циклы: внешний для A, внутренний для x
  • Реализовать формулу через логические операции
  • Не забыть про else и break для циклов

Шаг 3: Запустить и проверить

  • Проверить ответ на нескольких значениях x вручную
  • Убедиться, что формула действительно истинна для всех x

5. Типы заданий задания 15

5.1. Арифметические операции

Характеристика: В выражениях используются арифметические операции (сложение, вычитание, умножение, сравнение).

Пример формулировки: "Для какого наибольшего целого неотрицательного числа А логическое выражение (39y+2x)(A<x)(A<y)(39 \neq y + 2x) \vee (A < x) \vee (A < y) истинно при любых целых неотрицательных х и у?"

Особенности:

  • Могут быть две переменные (x и y)
  • Используются сравнения: `>, <, >=, <=, ==, !=
  • Нужны вложенные циклы для всех переменных

Ссылка на подборку заданий: №15. Логические выражения. Арифметические операции


5.2. Битовые операции

Характеристика: В выражениях используется побитовая конъюнкция & (AND).

Пример формулировки: "Для какого наименьшего неотрицательного целого числа А формула (x&340)((x&41=0)(x&A0))(x &amp; 34 \neq 0) \to ((x &amp; 41 = 0) \to (x &amp; A \neq 0)) тождественно истинна?"

Особенности:

  • Используется операция & (побитовая конъюнкция)
  • В Python: x & число - побитовая операция над целыми числами
  • Проверяется равенство/неравенство нулю: x & число == 0 или x & число != 0

Важно: Не путать & (побитовая операция) и and (логическая операция)!

Ссылка на подборку заданий: №15. Логические выражения. Битовые операции


5.3. Графики

Характеристика: В выражениях используются неравенства и сравнения, связанные с графиками функций или областями на числовой прямой.

Пример формулировки: "Для какого наименьшего целого неотрицательного числа А выражение (x>78)(A>x)(x > 78) \vee (A > x) тождественно истинно?"

Особенности:

  • Используются сравнения: >, <, >=, <=
  • Могут быть связаны с графиками функций
  • Одна переменная x

Ссылка на подборку заданий: №15. Логические выражения. Графики


5.4. Множества

Характеристика: В выражениях используются операции над множествами: принадлежность (), не принадлежность (), пересечение, объединение.

Пример формулировки: "Элементами множеств А, P, Q являются натуральные числа. Известно, что выражение (xA)(((xP)(xQ))(xR))(x \notin A) \to (((x \in P) \wedge (x \in Q)) \to (x \in R)) истинно при любом значении переменной х. Определите наименьшее возможное произведение элементов в множестве А."

Особенности:

  • Множества задаются явно или через условия (кратные числа, суммы цифр и т.д.)
  • В Python используются множества (set()) и операции in, not in
  • Могут потребоваться дополнительные вычисления (НОД, произведение и т.д.)

Ссылка на подборку заданий: №15. Логические выражения. Множества


5.5. Отрезки

Характеристика: На числовой прямой заданы отрезки (интервалы), нужно найти минимальную длину или другие характеристики отрезка A.

Пример формулировки: "На числовой прямой даны два отрезка: P = [117; 158] и Q = [129; 180]. Укажите наименьшую возможную длину такого отрезка А, что формула (xP)(((xQ)¬(xA))¬(xP))(x \in P) \to (((x \in Q) \wedge \neg(x \in A)) \to \neg(x \in P)) истинна при любом значении переменной х."

Особенности:

  • Отрезки задаются как списки: P = list(range(117, 158 + 1))
  • Нужно найти элементы, которые должны быть в A
  • Затем вычислить длину отрезка: max(A) - min(A)

Ссылка на подборку заданий: №15. Логические выражения. Отрезки


5.6. Смешанные операции

Характеристика: В выражениях комбинируются различные типы операций: арифметические, битовые, множества, отрезки.

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

Особенности:

  • Требуется понимание всех предыдущих типов
  • Могут быть сложные вложенные импликации
  • Нужно аккуратно преобразовывать выражения

Ссылка на подборку заданий: №15. Логические выражения. Смешанные операции


6. Типичные ошибки и как их избежать

6.1. Неправильный диапазон для переменной

Проблема: Использование range(0, ...) когда в условии написано "натуральное x", или наоборот.

Решение:

  • "натуральное" = range(1, ...)
  • "неотрицательное целое" = range(0, ...)

6.2. Забыли break после print

Проблема: При поиске наименьшего/наибольшего A забывают поставить break после print(A).

Решение: Всегда ставить break сразу после print(A).


6.3. Неправильное преобразование импликации

Проблема: Путают формулу: AB=¬ABA \to B = \neg A \vee B, пишут наоборот или забывают отрицание.

Решение:

  • Запомнить: импликация ложна только при 1→0
  • Формула: "не A или B" = not A or B
  • В Python можно использовать A <= B

6.4. Недостаточный диапазон для переменной

Проблема: Использование слишком маленького диапазона для x, пропуск значений, при которых выражение ложно.

Решение:

  • Использовать range(1, 10_000) или range(0, 10_000) минимум
  • Для сложных задач с большими числами - увеличить до 100_000

6.5. Неправильное направление поиска для наибольшего A

Проблема: Ищут наибольшее A, но используют range(1, 10_000) и не ставят break.

Решение:

  • Для наибольшего: range(10_000, 0, -1) - идём от большего к меньшему
  • Обязательно ставить break после первого найденного

8. Стратегия решения на экзамене

8.1. Время на задание 15

Рекомендуемое время: 8-12 минут (включая проверку)

Распределение:

  • Чтение условия и преобразование: 2-3 минуты
  • Написание кода: 3-4 минуты
  • Запуск и проверка: 2-3 минуты
  • Проверка на краевых случаях: 1-2 минуты

8.2. Алгоритм действий

  1. Прочитать условие внимательно: отметить область определения переменной
  2. Преобразовать выражение: убрать все импликации, применить де Моргана (опционально)
  3. Написать код: использовать шаблон, не забыть про диапазон и break
  4. Запустить: проверить ответ
  5. Проверить вручную: подставить найденное A в исходное выражение для нескольких x

8.3. Если не получается

  • Проверьте преобразование импликации
  • Проверьте диапазон переменной (0 vs 1)
  • Увеличьте диапазон для x до 100_000
  • Проверьте, правильно ли написан break
  • Попробуйте метод с all() - иногда он помогает найти ошибку

Составлено: Лилия С.
Источники: КИМ ЕГЭ 2026, открытый банк ФИПИ, спецификация ЕГЭ по информатике, яндекс учебник

Удачи на экзамене! 🎓