На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится троичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи справа дописываются две последние троичные цифры полученной записи;
б) если число N на 3 не делится, то вычисляется сумма цифр полученной троичной записи, эта сумма умножается на 3, переводится в троичную систему счисления и дописывается в конец числа.
Полученная таким образом запись является троичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 8 = 223 результатом является число 221103 = 228, а для исходного числа 9 = 1003 результатом является число 100003 = 81.
Укажите число R, ближайшее к 910, которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.
Приведём решение на языке Python.
def f(n):
s=''
while n > 0:
s = str(n%3) + s
n //= 3
return s
def summac(x):
t = 0
while x > 0:
t += x%10
x //= 10
return t
c = []
for n in range(10, 1000):
s = f(n)
if n%3 == 0:
s = s + s[-2:]
else:
s = s + f(summac(int(s)) * 3)
r = int(str(s),3)
#Если число число не будет найдено, увеличиваем слагаемое 50
if 910 - 50 <= r <= 910 + 50:
c.append(r)
print(c)
Ответ: 921.

