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

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

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

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

Задача 1#5783

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

x&51 = 0∨ (x&42 = 0 → x&A  ⁄= 0)

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

Показать ответ и решение
for a in range(1000):
    flag = 0
    for x in range(1000):
        if ((x & 51 == 0) or ((x & 42 == 0) <= (x & a != 0))) == False:
            flag = 1
    if flag == 0:
        print(a)
        break

Ответ: 17

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

Задача 2#5785

Обозначим через m&n  поразрядную конъюнкцию неотрицательных целых чисел m  и n.  Так, например, 14 &5 =  11102&01012  = 01002 = 4.
Для какого наименьшего неотрицательного целого числа A  формула
x &39 =  0 ∨ (x&41 = 0 →  x&A  ⁄=  0)
тождественно истинно (т.е. принимает значение 1 при любом неотрицательном целом значении переменной x)?

Показать ответ и решение
for a in range(1000):
    flag = 0
    for x in range(1000):
        if ((x & 39 == 0) or ((x & 41 == 0) <= (x & a != 0))) == False:
            flag = 1
    if flag == 0:
        print(a)
        break

Ответ: 6

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

Задача 3#6042

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

Для какого наибольшего неотрицательного целого числа A  формула (x&A  ⁄=  0) → ((x&11  = 0) →  (x&17  ⁄= 0))  тождественно истинна (т.е. принимает значение 1  при любом неотрицательном целом значении переменной x  )?

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

Введем обозначение: x&a  = 0 ⇔  Za.  Тогда данное выражение перепишется в виде ---           ----
ZA →  (Z11 →  Z17).

Воспользуемся тем, что a →  b = a ∨ b.  Тогда наше выражение имеет вид      ----  ----
ZA ∨ Z11 ∨ Z17.

Теперь воспользуемся тем же, только в обратную сторону. Запишем выражение так: Z11 ∧ Z17 →  ZA.

Помним, что Za ∧  Zb = Za or b.  Значит, нам нужно найти наибольшее неотрицательное целое A  такое, что Z11 or17 → ZA  = 1.

Z11or17   мы можем сразу вычислить. Так как 11 = 10112, 17 = 100012,  можем выполнить поразрядное сложение:

 01011;
-10001;--
 11011

Чтобы импликация была истинна, нам нужно, чтобы на тех местах, где справа стоит единица (в двоичной записи числа), слева она стояла тоже.

Таким образом, единица может стоять на тех местах, где она стоит в двоичной записи числа слева — необязательно, но если где-то и стоит, то только там. Но вспомним, что мы ищем максимальное A  : значит, мы хотим, чтобы в A  было как можно больше единиц. А так как единицы могут быть только на тех местах, где стоят единицы в 11011,  наибольшее возможное A,  — это и есть 11011  =  27  .
      2     10

Ответ: 27

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

Задача 4#6043

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

Для какого наибольшего неотрицательного целого числа A  формула ((x&23  = 0) ∨ (x&17  = 0)) → ((x&58  ⁄= 0) →  (x&A  = 0 ))  тождественно истинна (т.е. принимает значение 1  при любом неотрицательном целом значении переменной x  )?

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

Введем обозначение: x&a  = 0 ⇔  ZA.  Тогда наше выражение имеет вид:                ----
(Z23 ∨ Z17) → (Z58 →  ZA ).

Так как a → b = a-∨ b,  получаем (Z23 ∨ Z17) →  (Z58 ∨ ZA ).  Так как Z23 ∨ Z17 = Z23&17.

23 = 101112,17 =  100012.  Тогда посчитаем 23&17  :

 10111;
-10001;--
 10001

100012 = 1710.

Тогда наше выражение имеет вид Z   →  (Z   ∨ Z  ).
  17     58    A  Это то же самое, что (Z   →  Z  ) ∨ (Z   →  Z ).
  17     58     17     A

Мы сразу можем определить, истинна ли Z17 →  Z58.

17 = 010001
58 = 111010

Нет, не истинна, т.к. на первом месте, например, в двоичной записи 17 стоит 0, а на первом в двоичной записи 58 — 1. Значит, нужно, чтобы истинна была импликация Z17 →  ZA.

Мы ищем наибольшее A.  Чтобы импликация истинна, на тех местах, где в двоичной записи A стоят единицы, стоят единицы и в двоичной записи 17. То есть больше единиц, чем есть в 17, в записи  A  быть не может. Тогда наибольшее A  — это и есть само 17.

Программное решение

for a in range(1,1000):
    flag = True
    for x in range(10000):
        if (((x & 23 == 0) or (x & 17 == 0)) <= ((x & 58 != 0) <= (x & a == 0))) == False:
            flag = False
            break
    if flag == True:
        print(a)

Ответ: 17

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

Задача 5#6045

Обозначим через m &n  поразрядную конъюнкцию неотрицательных целых чисел m  и n  .

Так, например, 14&5  = 11102 &01012 =  01002 = 4  .

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

x&17  = 0 →  (x&33 ⁄=  0 →  x&A  ⁄= 0)

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

Показать ответ и решение
def f(a):
    for x in range(1000):
        if not((x & 17 == 0) <= ((x & 33 != 0) <= (x & a != 0))):
            return False
    return True

for a in range(1000):
    if f(a):
        print(a)
        break

Ответ: 32

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

Задача 6#6046

Обозначим через m &n  поразрядную конъюнкцию неотрицательных целых чисел m  и n  .

Так, например, 14&5  = 11102 &01012 =  01002 = 4  .

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

x&15  = 0 →  (x&29 ⁄=  0 →  x&A  ⁄= 0)

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

Показать ответ и решение
def f(a):
    #если отрцание формулы возвращает истину,
    # то сама формула возвращает ложь
    for x in range(1000):
        if not((x & 15 == 0) <= ((x & 29 != 0) <= (x & a != 0))):
            return False
    return True

for a in range(1000):
    if f(a):
        print(a)
        break

Ответ: 16

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

Задача 7#6340

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

x&A  ⁄= 0 →  (x&10  = 0 →  x&5  ⁄= 0)

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

Показать ответ и решение
def f(a):
    # если отрцание формулы возвращает истину,
    # то сама формула возвращает ложь
    for x in range(1000):
        if not((x & a != 0) <= ((x & 10 == 0) <= (x & 5 != 0))):
            return False
    return True

for a in range(1000):
    if f(a):
        print(a)

Ответ: 15

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

Задача 8#6362

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

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

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

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

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

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

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

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

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

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

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

Разделим известную часть и выражения с A  :

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

Сделаем отрицание известной части, чтобы найти те значения x  , которые будут давать истину для отрицания.

Тогда они будут обязаны выполняться для условия с A  : (x&A  ⁄=  0)

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

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

  11101

-xxxxx---
 xxx0x

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

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

x &24

  11000
  000x0
---------
  00000

Условие x&24  ⁄= 0  не выполнится, так как для уже известных цифр чисел x  результат поразрядной конъюнкции будет равен 0.

x &47

  101111
  x000x0
----------
  x000x0

Условие x&47  ⁄= 0  выполнится, если хотя бы одна цифра на месте x будет равна 1. Выпишем числа x  , которые дают истину для отрицания известной части: 100000
000010
100010

Для этих чисел x  должно быть истинным условие (x &A  ⁄= 0)  . Значит, в числе A  обязательно должны быть единицы в двоичном виде на разрядах 1 и 5 при нумерации с 0 справа налево. Значит наименьшее число A  имеет значение 1000102 =  3410   . Ответ 34.

Программное решение

for a in range(1000):
    flag = True
    for x in range(10000):
        if (((x & 47 != 0) or (x & 24 != 0)) <= ((x & 29 == 0) <= (x & a != 0))) == False:
            flag = False
            break
    if flag == True:
        print(a)
        break

Ответ: 34

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

Задача 9#6377

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

x&A  ⁄= 0 → ((x&17 = 0 ∧x&5 = 0) → x&3 ⁄= 0)

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

Показать ответ и решение
for a in range(0, 1000):
    flag = True
    for x in range(0, 1000):
        if ((x & a != 0) <= (((x & 17 == 0) and (x & 5 == 0)) <= (x & 3 != 0))) == False:
            flag = False
            break
    if flag:
        print(a)

Ответ: 23

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

Задача 10#6813

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

Для какого наименьшего неотрицательного целого числа A  формула (x&25  ⁄= 0 ) → ((x&17  = 0) →  (x &A  ⁄= 0))  тождественно истинна (т.е. принимает значение 1  при любом неотрицательном целом значении переменной x  )?

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

Обозначим x &25 =  0 ⇔ Z25,x &17 =  0 ⇔ Z17, x&A  = 0 ⇔  ZA.  Перепишем: ----          ---
Z25 →  (Z17 →  ZA ) = 1  для любых x.

Воспользуемся тем, что a → b = a-∨ b,a-= a.  Тогда Z25 ∨ Z17-∨ ZA-=  1.  Теперь воспользуемся тем же в обратную сторону: соберем импликацию. Получим (Z17 ∧ ZA ) → Z25 = 1.

Помним, что Z17 ∧ ZA = Z17orA.  Тогда Z17orA → Z25 =  1.

Переведем в двоичную систему счисления известные числа: 17 = 10001, 25 = 11001.

\(\)

r _& 10001;
∗ ∗ ∗ ∗∗ ;
11001

\(\)

Известно, что, чтобы данная импликация была равна 1, на тех местах, где в двоичной записи 25 стоят единички, в двоичной записи Z17orA  должны тоже стоять единички.

Мы ищем наименьшее неотрицательное целое число A.  Значит, где вместо звездочек можно ставить нули, — будем ставить. Двигаемся справа налево. На место первой звездочки можно поставить 0 — единичка уже есть в записи числа 17. На втором месте все равно, что ставить, — в записи 25 на этом месте 0. Ставим 0. Аналогично ставим на третье место. Теперь посмотрим на четвертое: в записи 25 — стоит 1, а вот в записи 17 — 0. Значит, на четвертом месте в числе A  должна быть единичка. Аналогично заканчиваем ставить знаки. Никаких лишних разрядов впереди числа добавлять не будем — мы ищем наименьшее.

Итак, получили 1000. Это число в двоичной системе счисления. В десятичной — 8.

Ответ: 8

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

Задача 11#6814

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

Для какого наименьшего неотрицательного целого числа A  формула ((x&47  ⁄= 0) ∨ (x&24  ⁄= 0)) → ((x&29  = 0) →  (x&A  ⁄= 0 ))  тождественно истинна (т.е. принимает значение 1  при любом неотрицательном целом значении переменной x  )?

Показать ответ и решение
for a in range(0, 100):
    flag = True
    for x in range(0, 10000):
        if (((x & 47 != 0) or (x & 24 != 0)) <= ((x & 29 == 0) <= (x & a != 0))) == False:
            flag = False
    if flag:
        print(a)
        break

Ответ: 34

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

Задача 12#6819

Обозначим через m &n  поразрядную конъюнкцию неотрицательных целых чисел m  и n  .

Так, например, 14&5  = 11102 &01012 =  01002 = 4  .

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

x &A  ⁄= 0 →  (x&14 =  0 →  x&3 ⁄=  0)

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

Показать ответ и решение
def f(a):
    # если отрцание формулы возвращает истину,
    # то сама формула возвращает ложь
    for x in range(1000):
        if not((x & a != 0) <= ((x & 14 == 0) <= (x & 3 != 0))):
            return False
    return True

for a in range(1000):
    if f(a):
        print(a)

Ответ: 15

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

Задача 13#6820

Обозначим через m &n  поразрядную конъюнкцию неотрицательных целых чисел m  и n  .

Так, например, 14&5  = 11102 &01012 =  01002 = 4  .

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

x &A  ⁄= 0 →  (x&10 =  0 →  x&5 ⁄=  0)

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

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

Преобразуем выражение к виду Z10Z5 →  ZA  с помощью законов де Моргана:

(x &A  = 0) ∨ (x&10 ⁄=  0) ∨ (x &5 ⁄= 0 )
(x&10  = 0 ∧ x&5  = 0) → (x &A  = 0)

Для того, чтобы выражение вида Z  Z  →  Z
 10  5     A  являлось истинным, единичные биты, стоящие в правой части, должны являться единичными битами левой.

Запишем числа 10 и 5 в двоичной системе счисления:

1010 = 10102

510 = 01012

Значит, A  обязательно должно содержать в себе единицу во всех разрядах. Так как ищем наибольшее A  , наш ответ 11112 = 1510   .

Ответ: 15

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

Задача 14#7627

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

x &A  ⁄= 0 →  (x&10 =  0 →  x&5 ⁄=  0)

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

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

Преобразуем выражение к виду Z10Z5 →  ZA  с помощью законов де Моргана:

(x &A  = 0) ∨ (x&10 ⁄=  0) ∨ (x &5 ⁄= 0)

(x &10 =  0 ∧  x&5  = 0) →  (x &A  = 0)

Заметим, что если A  = 0  , то последнее выражение всегда 0  , а следовательно последняя скобка всегда 0  , то есть выражение имеет вид:

X →  1  , а это всегда истинно.

Нам нужно минимальное неотрицательное целое число A  , значит наш ответ 0  .

 

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

for a in range(1000):
    fl = 0
    for x in range(1000):
        if ((x & a != 0) <= ((x & 10 == 0) <= (x & 5 != 0))) == 0:
            fl = 1
            break
    if not fl:
        print(a)
        break

Ответ: 0

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

Задача 15#16315

Обозначим через m&n  поразрядную конъюнкцию неотрицательных целых чисел m  и n.

Так, например, 14&5 = 11102&01012 = 01002 = 4.

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

x&38 = 0 → (x&55 ⁄= 0 → x&A  ⁄= 0)

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

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

3810 = 1001102

5510 = 1101112

Враги хотят подобрать x  такой, что x&38 = 0,x&55 ⁄= 0,x&A = 0  . Тогда на всех разрядах где у 38 единички будут нули и в одном из разрядов или в двух одновременно (где у 38 в двоичной записи нули, а у 55 единички) будут единички. Во всех остальных разрядах будут нули чтобы была больше вероятность истинности x&A  = 0  .

Тогда друзья чтобы x&A  ⁄= 0  поставят единички где они гарантированно могут появится в x  . Это будет число 100012 = 17  .

Ответ: 17

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

Задача 16#16316

Обозначим через m&n  поразрядную конъюнкцию неотрицательных целых чисел m  и n.

Так, например, 14&5 = 11102&01012 = 01002 = 4.

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

x&65 = 0 → (x&91 ⁄= 0 → x&A  ⁄= 0)

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

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

6510 = 10000012

9110 = 10110112

Враги хотят подобрать x  такой, что x&65 = 0,x&91 ⁄= 0,x&A = 0  . Тогда на всех разрядах где у 65 единички будут нули и в одном из разрядов или в двух одновременно (где у 65 в двоичной записи нули, а у 91 единички) будут единички. Во всех остальных разрядах будут нули чтобы была больше вероятность истинности x&A  = 0  .

Тогда друзья чтобы x&A  ⁄= 0  поставят единички где они гарантированно могут появится в x  . Это будет число 110102 = 26  .

Ответ: 26

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

Задача 17#18142

Введём выражение m&n  , обозначающее поразрядную конъюнкцию n и m (логическое «И» между соответствующими битами двоичной записи). Определите наименьшее натуральное число A  , такое что выражение

(x&41 = 0) → ((x&119 ⁄= 0) → (x&A ⁄= 0))

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

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

Враги хотят чтобы одновременно x&41 = 0  , x&119 ⁄= 0  , x&A  = 0  .

4110 = 01010012

119  = 1110111
   10         2

Для выполнения первого условия x  должен иметь вид _ _ _ 0 _ 0 _ _ 0. На месте _ может стоять либо 0, либо 1.

Для выполнения и второго условия x  должен иметь вид _ _ * 0 * 0 * * 0. На месте хотя бы одной звездочки должна стоять единичка.

Для выполнения третьего условия единиц должно быть как можно меньше, значит x  должен иметь вид 0 0 * 0 * 0 * * 0. На месте только одной звездочки должна стоять единица.

Тогда друзья подберут такое минимальное A  чтобы x&A ⁄= 0  . Друзьям достаточно подставить единички в тех местах где они могут появиться в x  . Итоговое A = 10101102 = 86  .

Ответ: 86

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

Задача 18#18143

Введём выражение m&n  , обозначающее поразрядную конъюнкцию n и m (логическое «И» между соответствующими битами двоичной записи). Определите наибольшее натуральное число A  , такое что выражение

(((x&13 ⁄= 0)∨ (x&39 = 0)) → (x&13 ⁄= 0))∨((x&A = 0) ∧(x&13 = 0))
тождественно истинно (то есть принимает значение 1 при любом натуральном значении переменной x  )?
Показать ответ и решение

Враги хотят чтобы одновременно x&39 = 0  , x&13 = 0  , x&A  ⁄= 0  .

1310 = 0011012

39  = 100111
  10        2

Для выполнения первого условия x  должен иметь вид _ _ _ _ 0 0 _ 0. На месте _ может стоять 1 или 0.

Для выполнения и второго условия x  должен иметь вид _ _ 0 _ 0 0 0 0.

Для выполнения третьего условия единиц в x  должно быть как можно больше. Тогда он имеет вид ...1 1 0 1 0 0 0 0.

Друзья хотят такое максимальное A  чтобы x&A  = 0  . Тогда на местах с единицами в x  будут нули, а на местах нулей будут единицы. Значит A = 1011112 = 47  .

Ответ: 47

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

Задача 19#20051

Введём выражение M &K,  обозначающее поразрядную конъюнкцию M  и K  (логическое «И» между соответствующими битами двоичной записи). Определите наименьшее неотрицательное число A  , такое что выражение

(x&25 ⁄= 0) → ((x&17 = 0) → (x&A ⁄= 0))

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

Показать ответ и решение
def f(x, A):  
    return (x & 25 != 0) <= ((x & 17 == 0) <= (x & A != 0))  
 
for A in range(10000):  
    met_false = False  
    for x in range(1000):  
        if not(f(x, A)):  
            met_false = True  
    if not(met_false):  
        print(A)  
        break

Ответ: 8

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

Задача 20#20052

Введём выражение M & K, обозначающее поразрядную конъюнкцию M и K (логическое «И» между соответствующими битами двоичной записи). Определите наименьшее натуральное число a, такое что выражение

((x&28 ⁄= 0)∨ (x&45 ⁄= 0)) → ((x&48 = 0) → (x&a ⁄= 0))

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

Показать ответ и решение
def f(x, A):  
    return ((x & 28 != 0) or (x & 45 != 0)) <= ((x & 48 == 0) <= (x & A != 0))  
 
for A in range(10000):  
    met_false = False  
    for x in range(1000):  
        if not(f(x, A)):  
            met_false = True  
    if not(met_false):  
        print(A)  
        break

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