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

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

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

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

Задача 1#63670

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

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

¬(¬ТР ЕУ Г(x, 111, A )∧ ¬Т РЕ УГ (101, x, A ))∨ (x > 200)

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

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

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

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

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

- Сначала сортируем три стороны по возрастанию с помощью sorted([a, b, c]).

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

- Если условие выполняется, функция возвращает True, иначе False.

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

- Используем цикл for A in range(1, 1000), перебирая натуральные числа до разумного верхнего предела.

3. Для каждого значения A  проверяем, является ли формула тождественно истинной:

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

- Перебираем все натуральные x  от 1 до 999.

- Для каждого x  проверяем выражение:

  • not(not triangle(x, 111, A) and not triangle(101, x, A)) or x > 200

- Если для какого-либо x  выражение оказывается ложным, устанавливаем flag = False, так как формула перестаёт быть тождественно истинной для этого A  .

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

5. После перебора всех A  выводим результат — сумму всех подходящих натуральных чисел 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 от 1 до 999
    for x in range(1, 1000):
        # Проверяем формулу для текущего x и A
        if (not(not triangle(x, 111, A) and not triangle(101, x, A)) or x > 200) == False:
            flag = False  # Если формула ложна хотя бы для одного x, A не подходит
    # Если формула истинна для всех x, добавляем A к сумме
    if flag:
        summa += A

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

Ответ: 212

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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