№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. Преобразование импликации

A→B=¬A∨BA \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. Законы де Моргана

Закон Формула
Отрицание конъюнкции ¬(A∧B)=¬A∨¬B\neg(A \wedge B) = \neg A \vee \neg B
Отрицание дизъюнкции ¬(A∨B)=¬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. Отрицание импликации

¬(A→B)=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. Арифметические операции

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

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

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

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

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


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

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

Пример формулировки: "Для какого наименьшего неотрицательного целого числа А формула (x&34≠0)→((x&41=0)→(x&A≠0))(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 являются натуральные числа. Известно, что выражение (x∉A)→(((x∈P)∧(x∈Q))→(x∈R))(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]. Укажите наименьшую возможную длину такого отрезка А, что формула (x∈P)→(((x∈Q)∧¬(x∈A))→¬(x∈P))(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. Неправильное преобразование импликации

Проблема: Путают формулу: A→B=¬A∨BA \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, открытый банк ФИПИ, спецификация ЕГЭ по информатике, яндекс учебник

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