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

На вход ал­го­рит­ма подаётся на­ту­раль­ное число N. Ал­го­ритм стро­ит по нему новое число R сле­ду­ю­щим об­ра­зом.

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

2.  К этой за­пи­си до­пи­сы­ва­ют­ся спра­ва ещё два раз­ря­да по сле­ду­ю­ще­му пра­ви­лу:

а)  скла­ды­ва­ют­ся все цифры дво­ич­ной за­пи­си, и оста­ток от де­ле­ния суммы на 2 до­пи­сы­ва­ет­ся в конец числа (спра­ва). На­при­мер, за­пись 11100 пре­об­ра­зу­ет­ся в за­пись 111001;

б)  над этой за­пи­сью про­из­во­дят­ся те же дей­ствия  — спра­ва до­пи­сы­ва­ет­ся оста­ток от де­ле­ния суммы цифр на 2.

По­лу­чен­ная таким об­ра­зом за­пись (в ней на два раз­ря­да боль­ше, чем в за­пи­си ис­ход­но­го числа N) яв­ля­ет­ся дво­ич­ной за­пи­сью ис­ко­мо­го числа R.

Ука­жи­те такое наи­мень­шее число N, для ко­то­ро­го ре­зуль­тат ра­бо­ты ал­го­рит­ма боль­ше 125. В от­ве­те это число за­пи­ши­те в де­ся­тич­ной си­сте­ме счис­ле­ния.

ИЛИ

У ис­пол­ни­те­ля Каль­ку­ля­тор две ко­ман­ды, ко­то­рым при­сво­е­ны но­ме­ра:

1.  при­бавь 2,

2.  умножь на 5.

Вы­пол­няя первую из них, Каль­ку­ля­тор при­бав­ля­ет к числу на экра­не 2, а вы­пол­няя вто­рую, умно­жа­ет его на 5.

На­при­мер, про­грам­ма 2121  — это про­грам­ма

умножь на 5,

при­бавь 2,

умножь на 5,

при­бавь 2,

ко­то­рая пре­об­ра­зу­ет число 1 в число 37.

За­пи­ши­те по­ря­док ко­манд в про­грам­ме, ко­то­рая пре­об­ра­зу­ет число 2 в число 24 и со­дер­жит не более четырёх ко­манд. Ука­зы­вай­те лишь но­ме­ра ко­манд.

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

Ре­ше­ние.

Дан­ный ал­го­ритм при­пи­сы­ва­ет в конце числа или 10, если из­на­чаль­но в его дво­ич­ной за­пи­си было не­чет­ное ко­ли­че­ство еди­ниц, или 00, если чет­ное.

12610  =  11111102 может по­лу­чить­ся в ре­зуль­та­те ра­бо­ты ал­го­рит­ма из числа 111112.

111112  =  3110.

 

Ответ: 31.

 

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

for n in range(2, 100): # на­чи­на­ем с 2, так как число 1 имеет толь­ко одну цифру

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

s = str(s)

s += str(s.count("1") % 2)

s += str(s.count("1") % 2)

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

if r > 125:

print(n)

break

ИЛИ

Решим за­да­чу от об­рат­но­го, а потом за­пи­шем по­лу­чен­ные ко­ман­ды спра­ва на­ле­во. Если число не де­лит­ся на 5, тогда по­лу­че­но через ко­ман­ду 1, если де­лит­ся, то через ко­ман­ду 2. Вы­чис­лим:

22 + 2 = 24 (ко­ман­да 1);

20 + 2 = 22 (ко­ман­да 1);

4 · 5 = 20 (ко­ман­да 2);

2 + 2 = 4 (ко­ман­да 1).

 

Ответ: 1211.

Источник: Де­мон­стра­ци­он­ная вер­сия ЕГЭ—2016 по ин­фор­ма­ти­ке