Все задачи №15
№15

ДЕЛ и отрезок B, наибольшее A

Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m»; пусть на числовой прямой дан отрезок B = [70; 90]. Для какого наибольшего натурального числа A логическое выражение ДЕЛ(x, A) ∨ ((x ∈ B) → ¬ДЕЛ(x, 22)) истинно (т.е. принимает значение 1) при любом целом положительном значении переменной x?

Источник: ФИПИ (Демо), № 31512

Ответвпиши то, что вывела программа
Показать разбор
  1. Напиши функцию d(n, m): делится ли n на m без остатка.
  2. Перепиши формулу в функцию f(x, A): → это <=, ¬ это not, каждую импликацию бери в скобки. Отрезок запиши как 70 <= x <= 90.
  3. Перебирай A и оставляй те, при которых all(f(x, A)) истинно для всех x от 1 до 1999.
  4. Нужно наибольшее A, поэтому возьми max и выведи результат.
def d(n, m):
    return n % m == 0

def f(x, A):
    return d(x, A) or ((70 <= x <= 90) <= (not d(x, 22)))

print(max(A for A in range(1, 1000) if all(f(x, A) for x in range(1, 2000))))