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

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

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

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

Задача 1#63668

Обозначим через ТРЕУГ(n,m, k  ) утверждение «существует невырожденный треугольник с длинами сторон n,m  и k  ».

Найдите сумму всех натуральных чисел A  , для которых формула

¬(¬ТР ЕУ Г(x, 333, A )∧ ¬Т РЕ УГ (879, x, A ))∨ (x > 600)

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

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

Решение рекурсивным перебором и проверкой треугольников

Идея решения заключается в следующем:

1. Определяем функцию triangle(a, b, c), которая проверяет, существует ли треугольник с заданными сторонами:

- Для трёх сторон a,b,c  сначала сортируем их по возрастанию.

- Проверяем условие треугольника: сумма двух меньших сторон больше третьей, то есть a+ b > c  .

- Функция возвращает True, если треугольник существует, и False в противном случае.

2. Организуем перебор всех возможных значений A  :

- Перебираем A  от 1 до 999 (натуральные числа в разумном диапазоне).

3. Для каждого A  проверяем тождественную истинность формулы:

- Создаём переменную flag = True, которая будет указывать, что формула верна для всех x  .

- Перебираем все x  от 1 до 999.

- Проверяем формулу для каждого x  :

- Выражение not(not triangle(x, 333, A) and not triangle(879, x, A)) or (x > 600).

- Если выражение ложно хотя бы для одного x  , устанавливаем flag = False.

- Если после проверки всех x  flag = True, добавляем A  к сумме.

4. После перебора всех A  выводим полученную сумму.

# Функция для проверки существования невырожденного треугольника
def triangle(a, b, c):
    # Сортируем стороны по возрастанию
    a, b, c = sorted([a, b, c])
    # Проверяем условие треугольника: сумма двух меньших сторон > третьей
    return a + b > c

# Переменная для накопления суммы подходящих A
summa = 0

# Перебираем все натуральные числа A от 1 до 999
for A in range(1, 1000):
    flag = True  # Флаг: True, если формула тождественно истинна для данного A
    # Перебор всех натуральных x
    for x in range(1, 1000):
        # Проверяем формулу для текущего x и A
        if (not(not triangle(x, 333, A) and not triangle(879, x, A)) or (x > 600)) == False:
            flag = False  # Если формула ложна для хотя бы одного x, A не подходит
    # Если формула истинна для всех x, добавляем A к сумме
    if flag:
        summa += A

# Выводим сумму всех подходящих A
print(summa)

Ответ: 1212

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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