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

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

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

2.  Далее эта за­пись об­ра­ба­ты­ва­ет­ся по сле­ду­ю­ще­му пра­ви­лу:

а)  если число N чётное, то к этой за­пи­си спра­ва и слева до­пи­сы­ва­ют­ся по две еди­ни­цы;

б)  если число N нечётное, то в конец дво­ич­ной за­пи­си (спра­ва) до­пи­сы­ва­ют­ся два нуля, а в на­ча­ло (слева) до­пи­сы­ва­ет­ся еди­ни­ца.

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

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

На­при­мер, для ис­ход­но­го числа 1310  =  11012 ре­зуль­та­том яв­ля­ет­ся число 11101002  =  11610, а для ис­ход­но­го числа 610  =  1102 это число 11110112  =  12310.

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

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

Ре­ше­ние.

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

otv = []

for N in range(2, 1000):

S = bin(N)[2:]

if N%2 == 0:

R ='11' + S + '11'

else:

R = '1' + S + '00'

if int(R,2) > 95:

otv.append(int(R,2))

print(min(otv))

Ответ: 100.