Задания
Версия для печати и копирования в MS Word
Тип Д15 № 10508
i

Обо­зна­чим через m&n по­раз­ряд­ную конъ­юнк­цию не­от­ри­ца­тель­ных целых чисел m и n. Так, на­при­мер, 12&6 = 11002&01102 = 01002 = 4.

Для ка­ко­го наи­боль­ше­го це­ло­го числа А фор­му­ла

х&А не равно 0 → (x&36 = 0 → х&6 не равно 0)

тож­де­ствен­но ис­тин­на (т. е. при­ни­ма­ет зна­че­ние 1 при любом не­от­ри­ца­тель­ном целом зна­че­нии пе­ре­мен­ной x)?

Спрятать решение

Ре­ше­ние.

Пре­об­ра­зу­ем вы­ра­же­ние по за­ко­нам ал­геб­ры ло­ги­ки:

¬Х → (Y → ¬Z) = Х + (Y → ¬Z) = Х + ¬Y + ¬Z = X + ¬(YZ) = YZ → X.

Далее при­ме­ня­ем обо­зна­че­ния и ре­а­ли­зу­ем спо­соб ре­ше­ния, из­ло­жен­ный К. Ю. По­ля­ко­вым в тео­ре­ти­че­ских ма­те­ри­а­лах (см., на­при­мер, раз­дел «Тео­рия» на нашем сайте), без до­пол­ни­тель­ных по­яс­не­ний.

Имеем им­пли­ка­цию Z36Z6 → ZA или Z(36 or 6) → ZA. За­пи­шем числа 36 и 6 в дво­ич­ной си­сте­ме счис­ле­ния: 3610  =  1001002, 610  =  1102, най­дем по­би­то­вую дизъ­юнк­цию: 100110. Еди­нич­ные биты, сто­я­щие в пра­вой части, долж­ны яв­лять­ся еди­нич­ны­ми би­та­ми левой. По­это­му в пра­вой части еди­нич­ны­ми би­та­ми не­за­ви­си­мо друг от друга могут быть (а могут не быть) толь­ко пер­вый, вто­рой или пятый биты (как обыч­но, счи­тая спра­ва на­ле­во, на­чи­ная с нуля).

Тем самым, наи­боль­шее А = 1001102  =  3810.

 

При­ведём дру­гое ре­ше­ние.

Решим за­да­ние с по­мо­щью языка про­грам­ми­ро­ва­ния PascalABC ме­то­дом пе­ре­бо­ра:

var

A, x: integer;

B: boolean;

begin

for A := 0 to 63 do begin

B := True;

for x := 0 to 63 do

if not (((x and 6) <> 0) or ((x and 36) <> 0) or ((x and (63-A)) = 0)) then

B := False;

if B then begin

writeln((63-A));

break;

end;

end;

end.

 

При­ведём ана­ло­гич­ное ре­ше­ние на языке Python.

for A in range(64):

B = True

for x in range(64):

if ((x&(63-A)==0) or (x&36!=0) or (x&6!=0))==0:

B=False

if B:

print(63-A)

break

За­ме­тим, что можно не пе­ре­би­рать числа, боль­шие 63, по­сколь­ку для за­пи­си чисел 6 и 36 хва­тит шести раз­ря­дов. Про­грам­ма вы­ве­дет ответ 38.

 

Ответ: 38.