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

15.04 Побитовая конъюнкция

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

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

Задача 1#6044

Обозначим через m&n  поразрядную конъюнкцию неотрицательных целых чисел m  и n.  Так, например, 14&5 = 11102&01012 = 01002 = 4.

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

((x&24 ⁄= 0)∨ (x&A  ⁄= 0)) → (x&24 ⁄= 0)∨ ((x&A ⁄= 0)∧ (x&47 = 0))

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

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

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

Для начала упростим данное выражение:

((x&24  ⁄= 0 ) ∨ (x&A ⁄=  0)) → (x&24  ⁄= 0) ∨ ((x &A  ⁄= 0) ∧ (x &47 =  0))

Раскроем импликацию:

--------------------------
((x&24  ⁄= 0) ∨ (x &A ⁄= 0)) ∨ (x &24 ⁄= 0) ∨ ((x&A ⁄=  0) ∧ (x&47 = 0))

((x&24  = 0) ∧ (x &A = 0)) ∨ (x &24 ⁄= 0) ∨ ((x&A ⁄=  0) ∧ (x&47 = 0))

Теперь воспользуемся свойством      --
A ∨ (A ∧  B) ≡ A ∨ B  :

((x &24 =  0) ∧ (x&A =  0)) ∨ (x&24 ⁄= 0) ≡ (x&A  =  0) ∨ (x&24 ⁄= 0 )

Получим:

(x&A  = 0) ∨ (x&24 ⁄=  0) ∨ ((x&A ⁄=  0) ∧ (x &47 = 0))

Аналогично применим предыдущее свойство:

(x&A  = 0 ) ∨ ((x&A ⁄= 0) ∧ (x&47  = 0)) ≡ (x&A  =  0) ∨ (x&47 = 0)

В итоге выражение упростится до следующего вида:

(x&A  =  0) ∨ (x&24 ⁄= 0) ∨ (x&47  = 0)

Сделаем отрицание известной части, чтобы найти те значения x  , которые будут давать истину для отрицания. Тогда они будут обязаны выполняться для условия с A  : (x&A  = 0 )

(x &24 =  0) ∧ (x&47 ⁄= 0 )

Выпишем поразрядную конъюнкцию (x&24 =  0)  :

  11000
-xxxxx---
 xx000

Значит для истинности отрицания числа x  должны в двоичном виде принимать вид ...xx00xxx  , где x – любая цифра.

Теперь выпишем поразрядную конъюнкцию (x&47  ⁄= 0)  с учётом известных цифр в числах x  :

  00101111
 ddx00xxx
--00x00xxx--

Условие x&47  ⁄= 0  выполнится, если хотя бы одна цифра на месте x будет равна 1. Выпишем числа x  , которые дают истину для отрицания известной части: 100000, 000100,000010, 000001, ...  Для всех таких чисел x  должно быть истинным условие (x&A  = 0)  . Значит, двоичная запись числа A  обязательно должна иметь вид ...000xx000  , чтобы обнулить все разряды, где могут быть 1 Значит наибольшее число A  имеет значение 11000  = 24
     2      10   . Ответ 24.

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

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

((x &24 ⁄=  0) ∨ (x&A ⁄=  0)) → ((x&24  ⁄= 0) ∨ ((x &A  ⁄= 0) ∧ (x &47 =  0)))

для всех неотрицательных целых x  , перебирая их с помощью вложенного цикла for. Для проверки условия поразрядной конъюнкции чисел используем операцию &. Если найдётся хотя бы одно значение x  , для которого выражение ложно, текущее A  отбрасываем. Первое A  , для которого выражение истинно для всех перебранных x  , и будет искомым наибольшим.

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

# Перебор возможных значений A с помощью цикла for
ans = 0
for a in range(1000):
    # Флаг для отслеживания ложных выражений
    flag = True
    # Перебор неотрицательных целых x с помощью вложенного цикла for
    for x in range(10000):
        # Проверяем тождественную истинность формулы с операцией & для поразрядной конъюнкции
        if (((x & 24 != 0) or (x & a != 0)) <= ((x & 24 != 0) or ((x & a != 0) and (x & 47 == 0)))) == False:
            # Если выражение ложно для текущего x
            flag = False
            break
    # Если ложных выражений не было, обновляем наибольшее значение A
    if flag == True:
        ans = max(ans, a)
print(ans)

Ответ: 24

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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