Задача к ЕГЭ по информатике на тему «побитовая конъюнкция» №1

Обозначим через 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 = Z17 orA.  Тогда Z17orA →  Z25 =  1.

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

()

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

()

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

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

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

 

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

for a in range(0, 100):
    flag = True
    for x in range(0, 10000):
        if ((x & 25 != 0) <= ((x & 17 == 0) <= (x & a != 0))) == False:
            flag = False
    if flag:
        print(a)
        break

Ответ: 8
Оцените статью
Я решу все!