Введём выражение , обозначающее поразрядную конъюнкцию n и m (логическое «И» между соответствующими битами двоичной записи). Определите наименьшее натуральное число
, такое что выражение
тождественно истинно (то есть принимает значение при любом натуральном значении переменной
)?
Решение руками:
Враги хотят чтобы одновременно ,
,
.
Для выполнения первого условия должен иметь вид _ _ _ 0 _ 0 _ _ 0. На месте _ может стоять либо 0, либо 1.
Для выполнения и второго условия должен иметь вид _ _ * 0 * 0 * * 0. На месте хотя бы одной звездочки должна стоять единичка.
Для выполнения третьего условия единиц должно быть как можно меньше, значит должен иметь вид 0 0 * 0 * 0 * * 0. На месте только одной звездочки должна стоять единица.
Тогда друзья подберут такое минимальное чтобы
. Друзьям достаточно подставить единички в тех местах где они могут появиться в
. Итоговое
.
Решение программой:
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