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

15.03 Неравенства

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

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

Задача 1#29691

Для какого наименьшего целого неотрицательного числа A  выражение

(3x + y ≥ A )∨(x < 30)∨(y ≤ 55)

будет тождественно ложно при некотором (хотя бы одном) наборе целых неотрицательных значений x  и y  ?

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

Аналитическое решение

Чтобы дизъюнкция была ложной при некотором неотрицательном целом значении x  и y  рассмотрим случай, когда (x < 30) = 0,  (y ≤ 55) = 0  и (3x + y ≥ A ) = 0.

Это эквивалентно следующей системе:

(|
||{y < − 3x + A,
 x ≥ 30,
|||(
 y > 55

Самое сильное ограничение для A  в системе, когда выражение примет значение ложь, будет при наименьших   x  и       y,  т. е. при 30  и 56  соответственно.

Подставим: 56 < − (3 ∗30)+ A,  откуда A > 146.  Значит, наименьшее значение A, когда выражение будет тождественно ложным — это 147.

Идея решения:

Перебираем целые неотрицательные значения A  по возрастанию (в коде — от 0 до 999). Для каждого A  вложенными циклами for перебираем все неотрицательные целые числа x  и y  (в коде — от 0 до 999) и проверяем выражение

(3x + y ≥ A) ∨(x < 30)∨(y ≤ 55).

Если найдётся хотя бы одна пара (x,y)  , для которой выражение ложно, текущий A  подходит. Первое найденное такое A  и будет наименьшим подходящим.

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

# перебор возможных значений A от 0 до 999
for a in range(0, 1000):  # перебираем неотрицательные A
    c = 0  # переменная-флаг, показывает найдено ли "ложное" значение
    # перебор неотрицательных x
    for x in range(0, 1000):
        # перебор неотрицательных y
        for y in range(0, 1000):
            # вычисляем логическое выражение
            F = (3*x + y >= a) or (x < 30) or (y <= 55)
            # если выражение ложно, A подходит
            if F == False:
                c = 1  # меняем значение флага
                break
        # если флаг изменился, прекращаем оба цикла
        if c == 1:
            break
    # если найдено хотя бы одно ложное выражение, выводим A и прекращаем поиск
    if c == 1:
        print(a)
        break

Ответ: 147

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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