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