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

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

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

2.  Вме­сто по­след­ней (самой пра­вой) дво­ич­ной цифры два­жды за­пи­сы­ва­ет­ся вто­рая слева цифра дво­ич­ной за­пи­си.

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

 

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

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

2.  Вто­рая слева цифра 0, еди­ни­ца в конце за­пи­си за­ме­ня­ет­ся на два нуля, новая за­пись: 100100.

3.  Ре­зуль­тат ра­бо­ты ал­го­рит­ма R  =  36.

 

При каком наи­мень­шем числе N в ре­зуль­та­те ра­бо­ты ал­го­рит­ма по­лу­чит­ся R > 76? В от­ве­те за­пи­ши­те это число в де­ся­тич­ной си­сте­ме счис­ле­ния.

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

Ре­ше­ние.

Число на вы­хо­де долж­но пре­вы­шать 7610  =  10011002. За­ме­тим, что можно рас­смат­ри­вать толь­ко те числа, боль­шие 7610, у ко­то­рых в дво­ич­ной за­пи­си на конце стоят либо две еди­ни­цы, либо два нуля. Также за­ме­тим, что для числа 7610 ис­ход­ны­ми чис­ла­ми могли быть либо 1001102, либо 1001112, ни одно из них нам не под­хо­дит, по­сколь­ку после ра­бо­ты ал­го­рит­ма не по­лу­чит­ся числа, боль­ше­го 76. Рас­смот­рим числа 1010002 и 1010012. Пер­вое из них мень­ше, при­ме­ним ал­го­ритм к нему. В ре­зуль­та­те ра­бо­ты ал­го­рит­ма по­лу­чит­ся число 10100002  =  80, что боль­ше 76.

Таким об­ра­зом, ответ  — 1010002  =  4010.

 

Ответ: 40.

 

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

За­ме­тим, что в ре­зуль­та­те при­ме­не­ния ал­го­рит­ма к чис­лам, раз­ли­ча­ю­щим­ся толь­ко по­след­ней циф­рой дво­ич­ной за­пи­си, по­лу­ча­ют­ся оди­на­ко­вые ре­зуль­та­ты. В осталь­ных слу­ча­ях боль­шим ис­ход­ным чис­лам со­от­вет­ству­ет боль­ший ре­зуль­тат. Рас­смот­рим числа, боль­шие 7610  =  10011002, и вы­бе­рем наи­мень­шее из них, ко­то­рое может яв­лять­ся ис­ход­ным чис­лом N.

7710  =  10011012  — не может яв­лять­ся ре­зуль­та­том ра­бо­ты ал­го­рит­ма.

7810  =  10011102  — не может яв­лять­ся ре­зуль­та­том ра­бо­ты ал­го­рит­ма.

7910  =  10011112  — не может яв­лять­ся ре­зуль­та­том ра­бо­ты ал­го­рит­ма.

8010  =  10100002  — может яв­лять­ся ре­зуль­та­том ра­бо­ты ал­го­рит­ма, может быть по­лу­че­но из числа 1010002  =  4010.

Таким об­ра­зом, ответ  — 1010002  =  4010.

 

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

for n in range(2, 100):

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

s = str(s)

t = s[1] * 2

s = s[0:len(s)-1]

s += t

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

if r > 76:

print(n)

break

 

При­ведём ре­ше­ние Бо­ри­са Са­ве­лье­ва на языке Python.

a = []

for n in range (4,1000):

if int(bin(n)[2:-1]+bin(n)[2:-1][1]+bin(n)[2:-1][1],2) > 76:

a.append(n)

print(min(a))


Аналоги к заданию № 33507: 33750 Все

Раздел кодификатора ФИПИ: 1.6.3 По­стро­е­ние ал­го­рит­мов и прак­ти­че­ские вы­чис­ле­ния