15.05 Отрезки
Ошибка.
Попробуйте повторить позже
На числовой прямой даны два отрезка: и
. Укажите максимальное количество целых чисел,
которые могут принадлежать отрезку
, что формула
истинна при любом целом значении переменной , т.е. принимает значение
при любом значении переменной
.
Решение руками
Первым шагом раскроем импликацию и отрицание:
Дальше инвертируем известную часть, чтобы определить при каких исходное выражение будет ложно:
Отсюда видно, что это выражение истинно (а исходное, соответственно, ложно), когда не принадлижит или отрезку
или отрезку
или им одновременно. На числовой прямой это область
Тогда, чтобы исходное
выражение всегда было истино необходимо «перекрыть» эту облость
. Отсюда максимальный отрезок
. Больше он быть не может, так как тогда при его орицании будет «перекрыта» не вся необходимая
область.
Отсется только вычислить количество целых чисел в этом отрезке: . Это и будет ответом.
Решение программой
Идея заключается в переборе возможных концов отрезка (от 1 до 100) и проверке, что при всех значениях
переменной
(от 1 до 1000) исходное выражение даёт истину. Если во время проверки найдётся хотя бы одно значение
, нарушающее условие, программа должна перейти к рассмотрению нового отрезка. После завершения перебора
максимальное полученное кол-во целых точек отрезка
и будет ответом.
Для реализации этой идеи необходимо задать отрезки и
при помощи функции range(), а также ввести
переменную
, равную 0: в неё будет записан наш ответ. Далее, создадим цикл for, необходимый для перебора значений
начала отрезка
. Внутри него, с помощью того же цикла, организуем перебор значений конца искомого отрезка. При
каждой итерации будем создавать переменную-флаг, которая изначально равна 0, а затем задавать отрезок
при помощи
функции range(). Внутри нижнего цикла необходимо начать перебор значений переменной
. Если выражение ложно хотя
бы для одного
, то флагу присваивается значение 1, а последний цикл останавливается. Если после перебора
всех значений флаг остаётся равным 0, значит выражение тождественно истинно для текущего отрезка
:
присваиваем его длину
, если она больше текущего значения данной переменной. В конце ответ выводится на
экран.
p = range(6, 42 + 1) # Задаём отрезок P q = range(26, 55 + 1) # Задаём отрезок Q r = 0 # Длина отрезка A for a1 in range(1, 100): # Перебираем начало отрезка A for a2 in range(a1 + 1, 101): # Перебираем конец отрезка A f = 0 # Флаг, указывающий на истинность выражения при любых значениях переменной x a = range(a1, a2) # Задаём отрезок A for x in range(1, 1000): # Перебираем значения переменной x # Если при текущем значении переменной x выражение даёт ложь (0), то if (((x in p) <= (x not in q)) <= (x not in a)) == 0: f = 1 # меняем значение флага на 1, break # останавливаем цикл и переходим к следующему отрезку A if f == 0: # Если значение флага не менялось, значит текущий отрезок A подходит r = max(len(a), r) # Сравниваем длину отрезка A с переменной r print(r) # Выводим ответ на экран
Специальные программы

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

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

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

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

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

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