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

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

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

2.  В конец за­пи­си (спра­ва) до­пи­сы­ва­ет­ся оста­ток от де­ле­ния числа N на 3.

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

 

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

1.  Тро­ич­ная за­пись числа N: 102.

2.  Оста­ток от де­ле­ния 11 на 3 равен 2, новая за­пись: 1022.

3.  На экран вы­во­дит­ся число 35.

 

Какое наи­мень­шее четырёхзнач­ное число может по­явить­ся на экра­не в ре­зуль­та­те ра­бо­ты ав­то­ма­та?

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

Ре­ше­ние.

Рас­смот­рим числа, боль­шие 999, и опре­де­лим наи­мень­шее из них, ко­то­рое может яв­лять­ся ре­зуль­та­том ра­бо­ты ал­го­рит­ма. За­ме­тим, что оста­ток от де­ле­ния числа на 3  — это по­след­няя цифра тро­ич­ной за­пи­си числа. В со­от­вет­ствии с за­дан­ным ал­го­рит­мом эта цифра до­пи­сы­ва­ет­ся спра­ва от за­пи­си числа. Таким об­ра­зом, по­лу­ча­ю­ще­е­ся в ре­зуль­та­те ра­бо­ты ав­то­ма­та число долж­но иметь в тро­ич­ной за­пи­си в конце две оди­на­ко­вые цифры.

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

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

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

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

Таким об­ра­зом, ответ  — 1003.

 

Ответ: 1003.

 

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

for i in range(1, 1000):

n = i

s = ""

while n > 0: # пе­ре­вод в тро­ич­ную си­сте­му

s += str(n % 3)

n //= 3

s = str(i % 3) + s

r = 0

for j in range(len(s)): # пе­ре­вод в де­ся­тич­ную си­сте­му

r += int(s[j]) * 3 ** j

if r > 999:

print(r)

break

 

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

m = []

for n in range(1,10000):

k=n

s = ''

while k > 0:

s = s + str(k %3)

k = k//3

s = s[::-1]

s = s + str(n%3)

r = int(s,3)

if r >= 1000:

m.append(r)

print(min(m))


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

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