Разборы · ЕГЭ, задание 15
Задание 15 ЕГЭ по информатике: логические выражения с параметром
Что проверяет задание
Дано логическое выражение с переменной x и параметром A: с делимостью (ДЕЛ), отрезками на числовой прямой, поразрядной конъюнкцией или неравенствами. Нужно найти наибольшее или наименьшее A, при котором выражение истинно при любом x. 1 балл.
Что нужно знать
- ДЕЛ(n, m) — «n делится на m без остатка»: в Python
n % m == 0. - x ∈ [70; 90] —
70 <= x <= 90. - Импликация a → b ложна только при a = 1 и b = 0:
(not a) or b. - Поразрядная конъюнкция x & A — оператор
&в Python.
Как решать
- Напишите функцию, которая для данного A проверяет выражение для всех x из большого диапазона (например, 1…1000).
- Переберите A и выберите наибольшее (или наименьшее) подходящее.
- Подумайте, хватает ли диапазона: если при больших x выражение заведомо истинно, диапазон взят правильно.
Пример из демоверсии 2027
Отрезок B = [70; 90]. Для какого наибольшего натурального A выражение ДЕЛ(x, A) ∨ ((x ∈ B) → ¬ДЕЛ(x, 22)) истинно при любом целом положительном x?
Решение. Вторая часть ложна, только если x ∈ [70; 90] и x делится на 22. На отрезке одно такое число — 88. При x = 88 выражение должно быть истинно за счёт первой части, значит, 88 делится на A. Наибольшее такое A — 88.
def ok(A):
for x in range(1, 1001):
in_b = 70 <= x <= 90
if not (x % A == 0 or ((not in_b) or x % 22 != 0)):
return False
return True
print(max(A for A in range(1, 1001) if ok(A))) # 88
При x > 90 вторая часть всегда истинна, поэтому диапазона до 1000 хватает.
Типичные ошибки
- Неправильно записывают импликацию — забывают
notу левой части. - Берут слишком маленький диапазон перебора A: если ответ совпал с его границей, расширьте диапазон и проверьте снова.
- Путают «истинно при любом x» и «истинно хотя бы при одном x».
- В задачах с отрезками A путают границы: «отрезок» включает концы.
Потренироваться: задание 15 новые варианты с проверкой ответа