Обозначим через m&n поразрядную конъюнкцию неотрицательных целых
Для какого наибольшего целого
→ (x&36 = 0 → х&6
)
тождественно истинна (т. е. принимает
Преобразуем выражение по законам алгебры логики:
Далее применяем обозначения и реализуем способ решения, изложенный К. Ю. Поляковым в теоретических материалах (см., например, раздел «Теория» на нашем сайте), без дополнительных пояснений.
Имеем импликацию
Таким образом, наибольшее А = 1001102 = 3810.
Приведём другое решение.
Решим задание с помощью языка программирования PascalABC методом перебора:
var
A, x: integer;
B: boolean;
begin
for A := 63 downto 0 do begin
B := True;
for x := 0 to 63 do
if not (((x and 6) <> 0) or ((x and 36) <> 0) or ((x and A) = 0)) then
B := False;
if B then begin
writeln(A);
break;
end;
end;
end.
Приведём другое решение на языке Python.
for A in range(63,0,-1):
B = True
for x in range(63):
if ((x&A==0) or (x&36!=0) or (x&6!=0))==0:
B=False
if B:
print(A)
break
Заметим, что можно не перебирать числа,
Ответ: 38.
Приведём решение Ильи Андрианова на языке Python.
def F(x, A):
return (x & A != 0) <= ((x & 36 == 0) <= (x & 6 != 0))
for A in range(1000, 0, -1):
if all(F(x, A) for x in range(1, 10000)):
print(A)
break

