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

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

1.  Стро­ит­ся дво­ич­ная за­пись числа N без ве­ду­щих нулей.

2.  Если в по­лу­чен­ной за­пи­си еди­ниц боль­ше, чем нулей, то спра­ва при­пи­сы­ва­ет­ся еди­ни­ца. Если нулей боль­ше или нулей и еди­ниц по­ров­ну, спра­ва при­пи­сы­ва­ет­ся ноль.

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

 

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

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

2.  В за­пи­си боль­ше еди­ниц, спра­ва при­пи­сы­ва­ет­ся еди­ни­ца: 11011.

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

 

Какое наи­мень­шее число, пре­вы­ша­ю­щее 80, может по­лу­чить­ся в ре­зуль­та­те ра­бо­ты ав­то­ма­та?

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

Ре­ше­ние.

Рас­смот­рим числа, боль­шие 80, и най­дем ми­ни­маль­ное число, ко­то­рое яв­ля­ет­ся ре­зуль­та­том ра­бо­ты ал­го­рит­ма.

 

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

8210  =  10100102  — яв­ля­ет­ся ре­зуль­та­том ра­бо­ты ал­го­рит­ма.

 

Ответ: 82.

 

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

for n in range(1, 100):

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

s = str(s)

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

if s.count('1') > s.count('0'):

s += '1'

else:

s += '0'

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

if r > 80:

print(r)

break

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