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

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

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

2.  Если сумма цифр де­ся­тич­ной за­пи­си за­дан­но­го числа нечётна, то в конец дво­ич­ной за­пи­си до­пи­сы­ва­ет­ся 1, если чётна  — 0.

3−4.  Пункт 2 по­вто­ря­ет­ся для вновь по­лу­чен­ных чисел ещё два раза.

5.  Ре­зуль­та­том ра­бо­ты ал­го­рит­ма ста­но­вит­ся де­ся­тич­ная за­пись по­лу­чен­но­го числа R.

 

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

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

2.  Сумма цифр числа 17  — чётная, до­пи­сы­ва­ем к дво­ич­ной за­пи­си 0, по­лу­ча­ем 1000102  =  3410.

3.  Сумма цифр числа 34  — нечётная, до­пи­сы­ва­ем к дво­ич­ной за­пи­си 1, по­лу­ча­ем 10001012  =  6910.

4.  Сумма цифр числа 69  — нечётная, до­пи­сы­ва­ем к дво­ич­ной за­пи­си 1, по­лу­ча­ем 100010112  =  13910.

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

 

Опре­де­ли­те наи­мень­шее воз­мож­ное зна­че­ние R > 2054, ко­то­рое может по­лу­чить­ся в ре­зуль­та­те ра­бо­ты ал­го­рит­ма.

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

Ре­ше­ние.

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

def summa(n):

s = 0

while n > 0:

s += n%10

n = n//10

return (s)

for n in range (10000):

p = ''

for i in range (3):

if summa(n) % 2 == 0:

p = bin(n)[2:] + '0'

n = int(p,2)

else:

p = bin(n)[2:] + '1'

n = int(p,2)

r = int(p,2)

if r > 2054:

print (r)

break

 

Ответ: 2057.

 

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

for n in range(1,300):

r = bin(n)[2:]

r = r+str(sum(map(int,str(int(r,2))))%2)

r = r+str(sum(map(int,str(int(r,2))))%2)

r = r+str(sum(map(int,str(int(r,2))))%2)

r = int(r,2)

if r > 2054:

print(r)

break

 


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