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

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

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

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

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

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

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