15.06 Смешанное
Ошибка.
Попробуйте повторить позже
Обозначим через утверждение «Натуральное число
при делении на натуральное число
даёт остаток
».
Для какого наименьшего целого числа формула
тождественно истинна (т. е. принимает значение при любых целых неотрицательных значениях переменных
,
)?
Аналитическое решение
Для того, чтобы решить данную задачу, найдём отрицание известной части (которая не зависит от ).
Получим:
Найдём, при каких значениях и
будут выполняться оба этих условия
и
:
Все найденные пары должны давать истину в неизвестной части (которая зависит от
), то есть давать истину
для одного условий
или
. Исходя из найденных пар, можно из 3 первых пар сверху брать
для условия,
тогда будет истина при
. Для последующих пар можно брать
для условия, тогда будет истина при
.
Таким образом, нужно, чтобы выполнялось условие
, а значит наименьшее подходящее значение
равно
19
Решение программой
Мы решаем задачу перебором, чтобы найти наименьшее число , при котором заданное логическое выражение верно
для всех неотрицательных целых
и
. Идея решения заключается в следующем:
1. Мы перебираем возможные значения от 0 до 999, чтобы гарантировать, что подходящее
будет
найдено.
- Для каждого значения мы предполагаем, что оно подходит, и создаём логический флаг flag, который изначально
равен True.
2. Для каждого мы перебираем все значения
от 0 до 999 с помощью цикла for x in range(1000).
- Для каждого мы перебираем все значения
от 0 до 999 с помощью вложенного цикла for y in
range(1000).
- Для каждой пары мы вычисляем логическое выражение
- Если выражение оказывается ложным (т.е. оператор not возвращает True), значит данная пара нарушает
тождественность. В этом случае мы устанавливаем flag = False и прерываем внутренний цикл по
, так как проверка
для остальных
уже не нужна.
- После прерывания внутреннего цикла, если flag равен False, мы прерываем цикл по , так как текущее
не
подходит.
3. Если после проверки всех и
флаг flag остался равен True, это значит, что выражение истинно для всех пар
при текущем
. Мы выводим это
как наименьшее и завершаем перебор с помощью оператора
break.
Таким образом, программа гарантированно находит наименьшее целое , при котором формула тождественно истинна
для всех неотрицательных
и
.
# Перебираем все возможные значения A от 0 до 999 for A in range(1000): # Предполагаем, что текущее A подходит flag = True # Перебираем все возможные значения x от 0 до 999 for x in range(1000): # Перебираем все возможные значения y от 0 до 999 for y in range(1000): # Проверяем выражение: если оно ложно для текущих x и y if not((x < A) or (y < A) or ((x * y) % 4 == 0) or (2 * x + 3 * y != 100)): # Устанавливаем флаг в False, так как найден случай, где выражение ложно flag = False # Прерываем цикл по y, проверка остальных значений y не нужна break # Если флаг False, прерываем цикл по x, текущее A не подходит if not(flag): break # Если выражение истинно для всех x и y, выводим текущее A и завершаем перебор if flag: print(A) break
Специальные программы

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

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

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

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

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

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