Обозначим через поразрядную конъюнкцию неотрицательных целых чисел
и
.
Так, например, .
Для какого наибольшего целого числа формула
тождественно истинна (т. е. принимает значение 1 при любом неотрицательном целом значении переменной )?
Решение руками
Для начала упростим данное выражение:
Раскроем отрицания:
Отделим скобками известную часть выражения от части с :
Сделаем отрицание известной части, чтобы найти те значения , которые будут давать истину для отрицания. Тогда они будут обязаны выполняться для условия с
:
Выпишем поразрядную конъюнкцию :
Значит для истинности отрицания числа должны в двоичном виде принимать вид
, где x – любая цифра.
Теперь выпишем поразрядную конъюнкцию с учётом известных цифр в числах
:
Условие выполнится, если цифра a будет равна 0. Значит двоичная запись чисел
, которые делают отрицание истинным, имеет следующий вид:
, где x — любая цифра. Чтобы условие условие
было истинным нужно, чтобы двоичная запись числа
имела вид
. Тогда при поразрядной конъюнкции с любым числом
в результате будет 0. Значит наибольшее число
имеет значение
. Ответ
.
Программное решение
ans = 0
for a in range(1000):
flag = True
for x in range(10000):
if ((not (x & a != 0)) or (not (x & 122 == 0)) or (x & 144 != 0)) == False:
flag = False
break
if flag == True:
ans = max(ans, a)
print(ans)