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

15.07 Прочие прототипы

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

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

Задача 1#56448

Пусть через ДЕЛ(m, n) обозначается утверждение «натуральное число m делится без остатка на натуральное число m»; через СУММБОЛ(k, p) –утверждение «сумма целых чисел k и p больше 0».

Для какого наименьшего натурального числа А формула

(ДЕЛ(x, 13) → ¬ СУММБОЛ(x, 25)) ∨ (x + A ≥ 245)

тождественно истинна (т.е. принимает значение 1) при любом натуральном значении переменной х?

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

Программное решение:

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

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

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

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

- Проверка суммы на больше нуля: x + 25 > 0 соответствует СУММБОЛ(x,25)  .

- Отрицание: not (x + 25 > 0) соответствует ¬ СУММБОЛ(x,25)  .

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

- Складываем x  с A  и проверяем неравенство x + a >= 245.

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

((x % 13 == 0) <= (not x + 25 > 0)) or (x + a >= 245)

2. Перебор кандидатов A  :

- Запускаем цикл for a in range(1, 500): для проверки всех возможных A  от 1 до 499.

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

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

- Для каждого x  в диапазоне range(1, 240) проверяем формулу.

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

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

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

- Выводим это значение A  и прекращаем перебор, так как нам нужно минимальное.

# Перебор возможных значений A
for a in range(1, 500):  # кандидаты на минимальное A
    f = True  # флаг нарушения формулы для текущего A
    # проверяем формулу для всех x
    for x in range(1, 240):  # перебор x
        # если формула ложна для текущего x, поднимаем флаг
        if not (((x % 13 == 0) <= (not x + 25 > 0)) or x + a >= 245):
            f = False  # текущее A не подходит
            break
    # если формула выполняется для всех x, выводим A
    if f:
        print(a)
        break

Ответ: 232

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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