Задание 15 ЕГЭ: как решать неравенства с ДЕЛ через перебор на Python?
Задание 15 второго типа: формула вида (ДЕЛ(x, A) ∧ ¬ДЕЛ(x, B)) → ДЕЛ(x, C) должна быть истинна при всех натуральных x. Надо найти наибольшее/наименьшее подходящее число. Логика на множествах/отрезках выносит мне мозг. Можно перебором?
3 ответа
Да, 15-е почти всегда добивается перебором. ДЕЛ(x, a) — это x % a == 0. Подбираешь искомый параметр A в каком-то диапазоне, и для каждого A проверяешь, что выражение истинно при ВСЕХ x от 1 до некоторого предела (для делимости хватает x до ~ произведения чисел из условия, обычно до 10000 с запасом).
for A in range(1, 10000):
ok = True
for x in range(1, 10001):
# пример выражения: (DEL(x,A) and not DEL(x,21)) -> DEL(x,35)
left = (x % A == 0) and not (x % 21 == 0)
right = (x % 35 == 0)
if left and not right: # импликация ложна
ok = False
break
if ok:
print(A)
Импликация P→Q ложна только когда P истинно, а Q ложно — это и проверяем. Дальше из всех подходящих A берёшь нужное (макс/мин).
ДЕЛ(x,a) = x % a == 0, импликация ложна при P и не Q. Двойной цикл и перебор — норм решение.
Перебором.