15.06 Смешанное
Ошибка.
Попробуйте повторить позже
Обозначим через ДЕЛ(,
) утверждение «натуральное число
делится без остатка на натуральное число
».
На числовой прямой дан отрезок . Для какого наибольшего натурального числа
формула
тождественно истинна (то есть принимает значение при любом натуральном значении переменной
)?
Решение 1 (ручками):
Система для врагов:
Враги мечтают, чтобы (в
) и при этом они делились на
. Таким образом, единственный подходящий
на отрезке
, делящийся на
, равен
. Тогда мечты врагов такие: «Вот бы
, равный
, не делился на
».
Друзья говорят: «Нет, делится на
». Максимальное
равно максимальному делителю числа
, то есть
. Это и есть ответ.
Решение программой
Мы решаем задачу перебором, чтобы найти наибольшее число , при котором заданное логическое выражение верно
для всех натуральных чисел
. Идея решения заключается в следующем:
1. Мы определяем вспомогательную функцию inn(x, B), которая проверяет принадлежность числа отрезку
.
- Функция возвращает True, если больше или равно левому концу отрезка
и меньше или равно правому концу
.
- Иначе возвращается False.
2. Мы определяем основную функцию f(x, A), которая проверяет истинность формулы для конкретного и
.
- Логическое выражение переводится в Python как (x % A != 0) <=
(inn(x, B) <= (x % 15 != 0)).
- Здесь оператор <= используется для имитации импликации: если левая часть ложна или правая часть истина, то выражение истинно.
3. Далее мы перебираем все возможные значения от 1 до 299 с помощью цикла for A in range(1,
300).
- Для каждого мы предполагаем, что оно подходит, и создаём логический флаг flag = True.
- Для проверки тождественной истинности выражения для всех , мы перебираем
от 1 до 499 с помощью
вложенного цикла for x in range(1, 500).
- Для каждого вызываем функцию f(x, A).
- Если функция возвращает False, это значит, что формула ложна для данного .
- В этом случае устанавливаем flag = False и прерываем внутренний цикл по , так как проверка для
остальных значений не нужна.
4. После завершения проверки всех , если flag остался равен True, это значит, что формула верна
для всех
при текущем
. Мы обновляем переменную maxim, которая хранит наибольшее подходящее
.
5. В конце перебора выводим значение maxim — наибольшее , для которого формула тождественно
истинна.
# Функция проверяет принадлежность числа x отрезку B def inn(x, B): # Возвращаем True, если x принадлежит отрезку [B[0], B[1]] return B[0] <= x <= B[1] # Функция проверяет истинность формулы для конкретного x и A def f(x, A): B = [50, 70] # Задаем отрезок B # Формула в Python: импликация через <= return (x % A != 0) <= (inn(x, B) <= (x % 15 != 0)) # Переменная для хранения наибольшего подходящего A maxim = 0 # Перебор возможных значений A от 1 до 299 for A in range(1, 300): # Предполагаем, что текущее A подходит flag = True # Проверяем формулу для всех x от 1 до 499 for x in range(1, 500): # Если формула ложна для текущего x if not(f(x, A)): # Устанавливаем флаг в False flag = False # Прерываем цикл по x, текущее A не подходит break # Если выражение истинно для всех x, обновляем наибольшее подходящее A if flag: maxim = A # Выводим наибольшее подходящее A print(maxim)
Специальные программы

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

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

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

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

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

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