Задание повышенного уровня сложности, проверяющее знание основных понятий и законов математической логики. На его выполнение отводится 3 минуты.
Условие задачи
Для какого наименьшего целого неотрицательного числа a выражение (x + 2) * y < a ∨ y > x ∨ x > 60 тождественно истинно (принимает значение 1 при любых целых неотрицательных x и y)?
Решение задачи с помощью программирования
Задачу легко решить программно, перебрав значения переменной a. Так как a — неотрицательное целое число, начнём перебор с нуля. Диапазон перебора ограничим значением 1000, что достаточно для поиска наименьшего подходящего a.
for a in range(1000):
if all( (x + 2) * y < a or y > x or x > 60 for x in range(1000) for y in range(1000) ):
print(a)
break
В этом коде:
- Вложенные циклы for x in range(1000) for y in range(1000) перебирают все пары неотрицательных целых чисел x и y в диапазоне от 0 до 999.
- Выражение (x + 2) * y < a or y > x or x > 60 проверяет истинность исходного логического выражения для каждой пары x и y.
- Функция all() возвращает True, если выражение истинно для всех пар x и y.
- Если all() возвращает True, значит, найдено наименьшее значение a, которое удовлетворяет условию задачи. Оператор break прерывает цикл после нахождения первого решения.
Результат
Запустив этот код, получаем ответ: 181. Это наименьшее целое неотрицательное число a, при котором данное выражение тождественно истинно.