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

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

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

2.  За­пись «пе­ре­во­ра­чи­ва­ет­ся», то есть чи­та­ет­ся спра­ва на­ле­во. Если при этом по­яв­ля­ют­ся ве­ду­щие нули, они от­бра­сы­ва­ют­ся.

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

 

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

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

2.  За­пись спра­ва на­ле­во: 10111 (ве­ду­щий ноль от­бро­шен).

3.  На экран вы­во­дит­ся де­ся­тич­ное зна­че­ние по­лу­чен­но­го числа 23.

 

Какое наи­боль­шее число, не пре­вы­ша­ю­щее 100, после об­ра­бот­ки ав­то­ма­том даёт ре­зуль­тат 13?

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

Ре­ше­ние.

Рас­смот­рим дей­ствия ал­го­рит­ма в об­рат­ном по­ряд­ке. Пе­ре­ведём 13 в дво­ич­ную си­сте­му счис­ле­ния: 1310  =  1101. Рас­смот­рим числа, из ко­то­рых можно по­лу­чить дан­ное число.

 

10112  =  1110.

1 01102  =  2210.

10 11002  =  4410.

101 10002  =  8810.

1011 00002  =  17610.

 

Таким об­ра­зом, наи­боль­шее число, удо­вле­тво­ря­ю­щее усло­вию за­да­чи равно 88.

 

Ответ: 88.

 

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

for n in range(100, 1, -1):

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

s = str(s)

s = s[::-1]

s = s[s.find('1'):]

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

if r == 13:

print(n)

break

 

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

for n in range(100, 1, -1):

s = bin(n)[2:]

s = s[::-1]

k = int(str(int(s)), 2)

if k == 13:

print(n)

break


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

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