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

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

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

2.  В по­лу­чен­ной за­пи­си все нули за­ме­ня­ют­ся на еди­ни­цы, все еди­ни­цы  — на нули. Из по­лу­чен­но­го числа уда­ля­ют­ся ве­ду­щие нули.

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

4.  Ре­зуль­та­том ра­бо­ты ал­го­рит­ма ста­но­вит­ся раз­ность ис­ход­но­го числа N и числа, по­лу­чен­но­го на преды­ду­щем шаге.

 

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

1.  Стро­им дво­ич­ную за­пись: 2210  =  101102.

2.  За­ме­ня­ем цифры и уда­ля­ем ве­ду­щие нули: 10110 → 01001 → 1001.

3.  Пе­ре­во­дим в де­ся­тич­ную си­сте­му: 10012  =  910.

4.  Вы­чис­ля­ем раз­ность: 22 − 9  =  13.

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

 

При каком наи­мень­шем N в ре­зуль­та­те ра­бо­ты ал­го­рит­ма по­лу­чит­ся R  =  979?

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

Ре­ше­ние.

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

for n in range(2, 10000):

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

s = s.replace('0','2')

s = s.replace('1','0')

s = s.replace('2','1')

s.lstrip("0")

s=int(s,2)

if n-s == 979:

print(n)

break

 

Ответ: 1001.


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