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

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

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

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

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

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

 

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

1.  Стро­им тро­ич­ную за­пись числа N: 3510  =  10223.

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

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

4.  Вы­чис­ля­ем мо­дуль раз­но­сти: |35 − 45|  =  10.

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

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

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

Ре­ше­ние.

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

for N in range(1864245, 10**10):

s = ''

while N > 0:

s += str(N%3)

N //= 3

s = s[::-1]

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

if abs(int(s,3) - int(R,3)) == 1864246:

print(int(s,3))

break

 

 

Ответ: 3323607.


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