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

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

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

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

Задача 1#26682

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

((x ≤ 9) → (x ⋅x ≤ A )) ∧((y⋅y ≤ A) → (y ≤ 9))

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

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

Решение руками

Упростим выражение, раскрыв импликацию:

((x > 9)∨(x ⋅x ≤ A )) ∧((y⋅y > A)∨ (y ≤ 9))

Заметим, что выражение состоит из двух частей, соединенных конъюнкцией, это значит, выражение истинно только в том случае, если обе части выражения истины. Рассмотрим их по отдельности.

Правая часть

(x > 9)∨ (x ⋅x ≤ A)

состоит из двух выражений, соединенных дизъюнкцией, тогда, чтобы это выражение было истинно необходимо чтобы было истинно хотя бы одна часть. Известная часть дает ложь при x ≤ 9  , подставим в неизвестную часть x = 9  , получаем 81 ≤ A  .

Левая часть

(y ⋅y > A )∨ (y ≤ 9)

так же состоит из двух выражений, соединенных дизъюнкцией, тогда, чтобы это выражение было истинно необходимо чтобы было истинно хотя бы одна часть. Известная часть дает ложь при y > 9  , подставим в неизвестную часть y = 10  , получаем 100 > A  .

Так как необходимо, чтобы обе части давали истину и при этом A было максимальным, ответ A = 99  .

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

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

(x ≤ 9 → x⋅x ≤ A)∧ (y⋅y ≤ A → y ≤ 9).

Если хотя бы для одной пары выражение ложно, данный A  исключаем. Если же для всех перебранных пар выражение истинно, A  считаем подходящим. Так как требуется наибольшее A  , сохраняем последнее подходящее значение.

# Функция проверки выражения для фиксированного A, x и y
def f(A, x, y):
    return ((x <= 9) <= (x * x <= A)) and ((y * y <= A) <= (y <= 9))

# Переменная для хранения наибольшего подходящего A
ma = 0

# Перебор всех возможных значений A
for A in range(150):
    # Считаем, что A подходит, пока не доказано обратное
    flag = True

    # Перебираем все возможные x
    for x in range(300):
        # Перебираем все возможные y
        for y in range(300):
            # Если условие не выполняется — A не подходит
            if not f(A, x, y):
                flag = False
                break

    # Если A подошёл — сохраняем его
    if flag:
        ma = A

# Выводим наибольший подходящий A
print(ma)

Ответ: 99

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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