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

Обо­зна­чим через m&n по­раз­ряд­ную конъ­юнк­цию не­от­ри­ца­тель­ных целых чисел m и n.

Так, на­при­мер, 12&6 = 11002&01102 = 01002 = 4.

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

х&А не равно 0 → (x&10 = 0 → х&3 не равно 0)

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

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

Ре­ше­ние.

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

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

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

Имеем им­пли­ка­цию Z10Z3 → ZA или Z(10 or 3) → ZA. За­пи­шем числа 10 и 3 в дво­ич­ной си­сте­ме счис­ле­ния: 1010  =  10102, 310  =  112, най­дем по­би­то­вую дизъ­юнк­цию: 1011. Еди­нич­ные биты, сто­я­щие в пра­вой части, долж­ны яв­лять­ся еди­нич­ны­ми би­та­ми левой. По­это­му в пра­вой части еди­нич­ны­ми би­та­ми не­за­ви­си­мо друг от друга могут быть (а могут не быть) толь­ко ну­ле­вой, пер­вый и тре­тий биты (как обыч­но, счи­тая спра­ва на­ле­во, на­чи­ная с нуля).

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

 

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

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

var

A, x: integer;

B: boolean;

begin

for A := 0 to 15 do begin

B := True;

for x := 0 to 15 do

if not (((x and 3) <> 0) or ((x and 10) <> 0) or ((x and (15-A)) = 0)) then

B := False;

if B then begin

writeln((15-A));

break;

end;

end;

end.

 

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

for A in range(16):

B = True

for x in range(16):

if ((x&(15-A)==0) or (x&10!=0) or (x&3!=0))==0:

B=False

if B:

print(15-A)

break

За­ме­тим, что можно не пе­ре­би­рать числа, боль­шие 15, по­сколь­ку для за­пи­си чисел 3 и 10 хва­тит четырёх раз­ря­дов. Про­грам­ма вы­ве­дет ответ 11.

 

Ответ: 11.