Тема 15. Алгебра логики – преобразование логических выражений

15.06 Смешанное

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела алгебра логики – преобразование логических выражений
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#61631

На числовой прямой дан отрезок Q = [30;51]  . Обозначим через ДЕЛ(n,m)  утверждение «натуральное число n  делится без остатка на натуральное число m  ». Обозначим k&p  , обозначающее поразрядную конъюнкцию k  и  p  (логическое «И» между соответствующими битами двоичной записи). Определите наименьшее натуральное число  A  , такое что выражение

(¬Д ЕЛ(x,5)∧ x∈∕25,50,55) → (((|x − 41| ≤ 11) → (x ∈ Q )) ∨(x&A ⁄= 0))

тождественно истинна, то есть принимает значение 1 при любом целом значении переменной х.

Показать ответ и решение

Решение программой

Мы будем использовать перебор для нахождения минимального A  , при котором логическая формула всегда истинна. Для этого последовательно проверим все натуральные числа A  начиная с 1 и для каждого проверим выполнение формулы для всех значений x  от 0 до достаточно большого числа (например, 10000).

1. Запишем формулу в Python:

- Проверка делимости на 5: x % 5 != 0 соответствует ¬ ДЕЛ(x,5)  .

- Исключение чисел 25, 50, 55: x not in [25, 50, 55].

- Условие попадания в отрезок около 41: abs(x - 41) <= 11.

- Проверка принадлежности Q = [30,51]  : 30 <= x <= 51.

- Поразрядное И с A  : x & A != 0.

- Импликация записывается как <= между булевыми выражениями.

- Полная формула в Python для конкретного x  и A  :

((x % 5 != 0 and x not in [25, 50, 55]) <= (((abs(x - 41) <= 11) <= (30 <= x <= 51)) or (x & A != 0)))

2. Перебор всех возможных A  :

- Запускаем цикл for a in range(1, 1000):, где a — кандидат на минимальное A  .

- Инициализируем флаг f = 0, который показывает, нарушена ли формула для текущего A  .

3. Проверка формулы для всех x  :

- Для каждого x  в диапазоне range(10000) проверяем логическую формулу.

- Если формула ложна для какого-либо x  , поднимаем флаг f = 1 и прерываем цикл по x  .

4. Выбор минимального A  :

- Если флаг f остался равным 0 после проверки всех x  , значит формула истинна для всех x  при данном A  .

- Выводим это значение и прекращаем перебор.

# Перебираем значения A
for a in range(1, 1000):  # кандидаты для A
    f = 0  # флаг нарушения формулы
    # проверяем формулу для всех x
    for x in range(10000):  # перебор x
        # если формула ложна, поднимаем флаг
        if (((x % 5 != 0) and (x not in [25, 50, 55])) <=
            (((abs(x - 41) <= 11) <= (30 <= x <= 51)) or (x & a != 0))) == False:
            f = 1  # формула не выполняется для данного a
            break
    # если формула выполняется для всех x, выводим результат
    if f == 0:
        print(a)
        break

Ответ: 4

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

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

Бесплатное онлайн-обучение

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

Налоговые вычеты

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

Специальное предложение
для учителей

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

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!