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

Ав­то­мат об­ра­ба­ты­ва­ет на­ту­раль­ное число N по сле­ду­ю­ще­му ал­го­рит­му.

1.  Стро­ит­ся дво­ич­ная за­пись числа N.

2.  Если N чет­ное, то в конец по­лу­чен­ной за­пи­си (спра­ва) до­пи­сы­ва­ет­ся 0, в на­ча­ло  — 1; если N нечётное, в конец и на­ча­ло до­пи­сы­ва­ет­ся по две еди­ни­цы.

3.  Ре­зуль­тат пе­ре­во­дит­ся в де­ся­тич­ную си­сте­му и вы­во­дит­ся на экран.

 

При­мер. Дано число N  =  13. Ал­го­ритм ра­бо­та­ет сле­ду­ю­щим об­ра­зом:

1.  Дво­ич­ная за­пись числа N: 1101.

2.  Число не­чет­ное, сле­до­ва­тель­но, по две еди­ни­цы по краям  — 11110111.

3.  На экран вы­во­дит­ся число 247.

 

Ука­жи­те наи­мень­шее число, боль­шее 52, ко­то­рое может яв­ля­ет­ся ре­зуль­та­том ра­бо­ты ав­то­ма­та.

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

Ре­ше­ние.

Пе­ре­ве­дем 5210 в дво­ич­ную си­сте­му счис­ле­ния, по­лу­чим 1101002. Най­дем два числа  — ми­ни­маль­ное чет­ное, из ко­то­ро­го можно по­лу­чить дво­ич­ную по­сле­до­ва­тель­ность такой же длины, и ми­ни­маль­ное не­чет­ное.

Для чет­но­го:

110100 -> 1010 из та­ко­го числа по­лу­ча­ет­ся 110100, что равно ис­ход­но­му, нам не­об­хо­ди­мо найти бОль­шее зна­че­ние. Сле­ду­ю­щее чет­ное зна­че­ние  — 1100, при его пре­об­ра­зо­ва­нии по­лу­чим 1110002  =  5610.

Для не­чет­но­го:

110100 -> 01 -> 1. Од­на­ко из та­ко­го числа по­лу­чит­ся 11111, что мень­ше за­дан­но­го. По­это­му най­дем ми­ни­маль­ное дву­знач­ное не­чет­ное дво­ич­ное число: 11 -> 1111112  =  6310.

Таким об­ра­зом, ми­ни­маль­ное из най­ден­ных зна­че­ний  — 56.

 

Ответ: 56.

 

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

За­ме­тим, что число, по­лу­чен­ное в ре­зуль­та­те ра­бо­ты ав­то­ма­та, долж­но окан­чи­вать­ся либо на 00 (к чет­но­му числу спра­ва до­пи­сы­ва­ет­ся 0), либо на 111 (к не­чет­но­му числу спра­ва до­пи­сы­ва­ют­ся 11).

Про­ве­рим по­сле­до­ва­тель­но числа, боль­шие 52:

5310  =  1101012  — не под­хо­дит, окан­чи­ва­ет­ся на 01.

5410  =  1101102  — не под­хо­дит, окан­чи­ва­ет­ся на 10.

5510  =  1101112  — не под­хо­дит, по­сколь­ку может быть по­лу­че­но толь­ко из числа 012, а ис­ход­ное число не может на­чи­нать­ся с 0.

5610  =  1110002  — под­хо­дит, по­лу­ча­ет­ся из числа 11002.

Таким об­ра­зом, ми­ни­маль­ное число, ко­то­рое может яв­лять­ся ре­зуль­та­том ра­бо­ты ал­го­рит­ма, равно 56.

 

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

a = []

for n in range(1, 100):

s = bin(n)[2:] # пе­ре­вод в дво­ич­ную си­сте­му

s = str(s)

if n % 2 == 0:

s = "1" + s + "0"

else:

s = "11" + s + "11"

r = int(s, 2) # пе­ре­вод в де­ся­тич­ную си­сте­му

if r > 52:

a.append(r)

print(min(a))

Источник: ЕГЭ по ин­фор­ма­ти­ке 24.06.2021. Ос­нов­ная волна
Раздел кодификатора ФИПИ: