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

Введём выражение 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  .

41  = 0101001   10         2

11910 = 11101112

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

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

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

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

 

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

def f(a):
    for x in range(1, 1000):
        if ((x & 41 == 0) <= ((x & 119 != 0) <= (x & a != 0))) == 0:
            return False
    return True

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

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