Автор: ЕГКР 27.04.24
Уровень: Базовый
Условие задачи:
Для какого наибольшего натурального числа А логическое выражение
¬ДЕЛ(x, А) → (ДЕЛ(x, 28) → ¬ДЕЛ(x, 49))
истинно (т.е. принимает значение 1) при любом натуральном значении переменной х?
Теоретическая справка:
Очень хорошая задачка, так как мы можем заменить функцию ДЕЛ на запись x % A == 0, таким образом можем избегать использование логического оператора not.
Код решения:
Комментарии к коду:
- def F(x, A):
Определяем функцию F, принимающую два аргумента: x и A. - return (x % A != 0) <= ((x % 28 == 0) <= (x % 49 != 0))
Возвращаем результаты логического выражения, сравнивая значения остатков от деления x на A, 28 и 49 с использованием логических операторов. - R = []
Инициализируем пустой список R, который будет содержать все значения A, удовлетворяющие определенному условию. - for A in range(1, 10000):
Запускаем цикл по всем целым числам A от 1 до 9999 включительно. - if all(F(x, A) for x in range(1, 10000)):
Проверяем, выполняется ли функция F для всех целых чисел x от 1 до 9999 для текущего A. - R.append(A)
Если условие на предыдущей строке истинно, добавляем значение A в список R. - print(max(R))
Находим и выводим максимальное значение из списка R.