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

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

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

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

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

 

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

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

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

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

 

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

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

Ре­ше­ние.

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

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

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

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

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

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

 

Ответ: 103.

 

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

for i in range(1, 100):

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 > 99:

print(r)

break

 

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

for n in range(100):

i = n

s = ''

while i>0:

s+=(str(i%3))

i //= 3

s = s[::-1]

s+=(str(n%3))

s = int(s,3)

if s > 99:

print(s)

break


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

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