Введём выражение обозначающее поразрядную конъюнкцию M и K (логическое «И» между соответствующими битами двоичной записи). Определите наименьшее неотрицательное число
, такое что выражение
тождественно истинно (то есть принимает значение при любом натуральном значении переменной
)?
Решение руками:
Мечты врагов:
Переведем числа в -сс.
.
. Проведем поразрядную конъюнцию с
. Получаем, что
. Запишем мечты врагов: «Вот бы
давал в поразрядной конъюнкции с
нолик».
Теперь играем за друзей. Друзья не хотят, чтобы в поразрядной конъюнкции с
давал ноль. Т.к. у нас требуют наименьшее число
, на место звездочек ставим нули. Получаем число
.
Решение программой:
def f(a):
for x in range(1000):
if ((x & 25 != 0) <= ((x & 17 == 0) <= (x & a != 0))) == 0:
return False
return True
for a in range(1, 1000):
if f(a):
print(a)
break