15.03 Неравенства
Ошибка.
Попробуйте повторить позже
Для какого наибольшего целого неотрицательного числа выражение
тождественно истинно (т.е. принимает значение 1 при любом неотрицательном целом значении
переменной и
Решение руками:
Инвертируем известную часть:
Пусть . Чтобы выполнялось условие
, нужно взять
, в таком случае
условие будет выполняться и для
, и для
.
Если мы возьмём пару , то теперь наибольшее значение
уже будет равно
2.
Соответственно, чем больше мы будем брать , тем большее значение
можно взять.
Но, когда значение станет больше, чем
, то тогда уже придётся ориентироваться в первую
очередь на условие для
.
Следовательно, чтобы найти наибольшее А, нам нужна такая пара , при которой будет
выполняться
.
Это будет пара , и при таких значениях переменных наибольшее
будет равно
22.
Идея решения:
Идея заключается в переборе возможных значений (от
до
) и проверке, что для всех
комбинаций
и
(от
до
) выражение
выполняется. Если найдётся хотя бы одна пара , для которой условие не выполняется (т.е.
логическое выражение окажется ложным), это
отбрасывается. Наибольшее
, при котором условие
выполняется для всех
и
, и будет ответом.
Для реализации этой идеи создадим цикл for для перебора параметра . Внутри него, также с
помощью циклов for, организуем перебор значений
и
. Для каждого
будем создавать
переменную-флаг, которая изначально равна
. Если условие в цикле if выполняется хотя бы раз,
это значит, что исходное выражение оказалось ложным для некоторой пары
, и
не подходит. Если флаг остался равен
, значит, условие в if не выполнилось ни разу и
подходит. Так как мы ищем наибольшее
, нужно запомнить последнее подходящее
значение.
Решение программой:
for a in range(0, 1000): # перебираем возможные A c = 0 # флаг: 0 - условие в цикле ни разу не выполнилось, # 1 - условие в цикле хоть раз выполнилось for x in range(1, 1000): # Перебор x for y in range(1, 1000): # Перебор y # проверяем выполнение условия, если выполняется — меняем флаг if ((y + 2*x != 69) or (a < x) or (a < y)) == False: c = 1 # условие выполнилось (нашли "плохую" пару) break # выходим из цикла y if c == 1: # условие уже выполнилось break # выходим из цикла x if c == 0: # условие не выполнилось ни разу, текущее A подходит print(a) # выводим текущее A
Специальные программы

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

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

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

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

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

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