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