*(А. Богданов) На вход алгоритма подаётся натуральное число \(N\) \((N \geqslant 10).\) Алгоритм строит по нему новое число \(R\) следующим образом:
Например, для исходного числа \(10_{10} = 101_3\) результатом является число \(10101_3 = 91_{10},\) а для исходного числа \(11_{10} = 102_3\) результатом является число \(10210_3 = 102_{10}.\)
Укажите значение \(N,\) после обработки которого с помощью этого алгоритма получается минимальное число \(R.\) В ответе запишите это число в десятичной системе счисления.
Решение:
Python
def conv(n):
alph = '012'
ans = ''
while n:
ans = alph[n % 3] + ans
n //= 3
return ans
def R(N):
tr = conv(N)
tr += tr[-2:] if N % 2 == 0 else conv(sum(int(x) for x in tr))
return int(tr, 3)
min_R = 10**100
ans = 0
for N in range(10, 100):
if R(N) < min_R:
min_R = R(N)
ans = N
print(ans)
Ответ: \(27\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене