15.03 Неравенства
Ошибка.
Попробуйте повторить позже
Для какого наибольшего целого неотрицательного числа выражение
тождественно истинно (т.е. принимает значение при любых неотрицательных целых значениях переменных
и
)?
Решение руками
Упростим выражение, раскрыв импликацию:
Заметим, что выражение состоит из двух частей, соединенных конъюнкцией, это значит, выражение истинно только в том случае, если обе части выражения истины. Рассмотрим их по отдельности.
Правая часть
состоит из двух выражений, соединенных дизъюнкцией, тогда, чтобы это выражение было истинно необходимо чтобы
было истинно хотя бы одна часть. Известная часть дает ложь при , подставим в неизвестную часть
, получаем
.
Левая часть
так же состоит из двух выражений, соединенных дизъюнкцией, тогда, чтобы это выражение было истинно необходимо
чтобы было истинно хотя бы одна часть. Известная часть дает ложь при , подставим в неизвестную часть
,
получаем
.
Так как необходимо, чтобы обе части давали истину и при этом A было максимальным, ответ .
Идея решения:
Перебираем все возможные значения в заданном диапазоне (в коде — от 300 вниз до 0, чтобы сразу
найти наибольшее подходящее значение). Для каждого
с помощью вложенных циклов for перебираем
все неотрицательные значения
и
(от 0 до 299). Для каждой пары
проверяем логическое
выражение
Если хотя бы для одной пары выражение ложно, данный исключаем. Если же для всех перебранных пар
выражение истинно, данный
подходит. Так как требуется наибольшее
, перебор идёт в обратном порядке, и первый
подходящий
будет ответом.
# Функция проверки выражения для фиксированного A, x и y def f(x, y, a): return ((x <= 9) <= (x * x <= a)) and ((y * y <= a) <= (y <= 10)) # Перебор A от 300 до 0 для поиска наибольшего подходящего for a in range(300, -1, -1): # Флаг: 0 - условие не выполнилось ни разу, 1 - условие хотя бы раз не выполнялось fl = 0 # Перебор x for x in range(300): # Перебор y for y in range(300): # Если выражение не выполняется, ставим флаг и выходим из цикла if not f(x, y, a): fl = 1 break if fl: break # Если условие не нарушилось ни разу для всех x и y — A подходит if not fl: print(a) # выводим наибольшее подходящее A break
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!