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

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

На­при­мер, 14&5 = 11102&01012 = 01002 = 4.

Для ка­ко­го наи­мень­ше­го не­от­ри­ца­тель­но­го це­ло­го числа А фор­му­ла x&41 ≠ 0 → (x&33 = 0 → x&А ≠ 0)

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

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

Ре­ше­ние.

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

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

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

Имеем им­пли­ка­цию Z33ZA → Z41 или Z(33 or A) → Z41. За­пи­шем число 41 в дво­ич­ной си­сте­ме счис­ле­ния: 4110  =  1010012. Еди­нич­ные биты, сто­я­щие в пра­вой части, долж­ны яв­лять­ся еди­нич­ны­ми би­та­ми левой. По­сколь­ку 3310  =  1000012, дво­ич­ная за­пись ис­ко­мо­го числа А долж­на со­дер­жать еди­нич­ные биты в тре­тьем раз­ря­де (как обыч­но, счи­тая спра­ва на­ле­во, на­чи­ная с нуля).

Тем самым, наи­мень­шее А = 10002  =  810.

 

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

Решим за­да­ние с по­мо­щью языка про­грам­ми­ро­ва­ния 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 41) = 0) or ((x and 33) <> 0) or ((x and A) <> 0)) then

B := False;

if B then begin

writeln(A);

break;

end;

end;

end.

 

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

for A in range(64):

B = True

for x in range(64):

if ((x&41==0) or (x&33!=0) or (x&A!=0))==0:

B=False

if B:

print(A)

break

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

 

Ответ: 8.