15.06 Смешанное
Ошибка.
Попробуйте повторить позже
Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m». Обозначим
через поразрядную конъюнкцию неотрицательных целых чисел
и
.
На числовой прямой даны отрезки и
.
Определите наименьшее натуральное число , такое что выражение
тождественно истинно, то есть принимает значение 1 при любом целом значении переменной х.
Решение аналитикой
Система для врагов:
Раскроем последнее неравенство системы: и
, то есть
и
, то есть
.
Враги мечтают, чтобы
(в
и в
),
и при этом они не делились на
. Таким образом,
чтобы победить, враги будут брать только следующие иксы:
.
Также враги мечтают, чтобы
. Максимальный икс, который могут взять друзья, равен
, то есть
, а минимальный икс =
, то есть
. Отсюда заметим, что ни один икс, подходящий врагам,
не содержит единичку в пятом с конца разряде в двоичной записи. Тогда мечты врагов такие: «Вот бы у
числа
была единичка в первом, втором, третьем, четвёртом или шестом с конца разряде в двоичной
записи».
Друзья говорят: «Нет, число не содержит единичку ни на одном из этих разрядов». Минимальное
, которое могут
взять друзья, равно
, то есть
.
Решение программой
Мы решаем задачу перебором, чтобы найти наименьшее число , при котором заданное логическое выражение верно
для любого целого числа
. Идея решения заключается в следующем:
1. Мы создаём функцию f(x, A), которая проверяет истинность формулы для конкретного и
. - Внутри функции
задаём отрезки Q = [12, 48] и P = [32, 64]. - Возвращаем результат логического выражения: число делится на 5
(x%5==0) или не принадлежит
(not inn(x, Q)) или поразрядная конъюнкция с
равна нулю (x&A==0) или
импликация для
((inn(x, P) <= (abs(x-31)>=17))).
2. Для проверки принадлежности числа отрезку
или
определяем вспомогательную функцию inn(x, P),
которая возвращает True, если
, и False иначе.
3. Мы перебираем все значения от 1 до 999 с помощью цикла for A in range(1, 1000): - Для каждого
устанавливаем флаг flag = True, предполагая, что текущий
подходит. - Перебираем все значения
от -1000 до 999 с помощью вложенного цикла for x in range(-1000, 1000). - Если для текущего
функция f(x, A) возвращает False, устанавливаем flag = False и прерываем цикл по
, так как это
не
подходит.
4. Если после проверки всех флаг flag остался равен True, это значит, что выражение истинно для всех
при
текущем
. Мы выводим этот
как наименьший и завершаем перебор с помощью break.
Таким образом, программа гарантированно находит наименьшее целое , при котором формула тождественно истинна
для любого целого
.
# Функция проверяет истинность формулы для конкретного x и A def f(x, A): # Определяем отрезки Q и P Q = [12, 48] P = [32, 64] # Проверяем выражение: делимость на 5 или не принадлежность Q или поразрядная конъюнкция с A равна нулю # или импликация для P return ((x % 5 == 0) or (not inn(x, Q)) or (x & A == 0) or ((inn(x, P)) <= (abs(x - 31) >= 17))) # Вспомогательная функция для проверки принадлежности x отрезку P def inn(x, P): return P[0] <= x <= P[1] # Перебираем все возможные значения A от 1 до 999 for A in range(1, 1000): # Предполагаем, что текущее A подходит flag = True # Перебираем все значения x от -1000 до 999 for x in range(-1000, 1000): # Если выражение ложно для текущего x и A if not f(x, A): # Устанавливаем флаг в False, так как найден случай, где выражение ложно flag = False # Прерываем цикл по x, текущее A не подходит break # Если выражение истинно для всех x, выводим текущее A и завершаем перебор if flag: print(A) break
Специальные программы

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

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

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

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

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

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