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