На вход алгоритма подаётся натуральное число \(N.\) Алгоритм строит по нему новое число \(R\) следующим образом.
Например, для исходного числа \(8 = 22_3\) результатом является число \(22110_3 = 228,\) а для исходного числа \(9 = 100_3\) результатом является число \(10000_3 = 81.\)
Укажите число \(R,\) ближайшее к \(826,\) которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.
Решение:
Python
def conv(n):
alph ='012'
ans = ''
while n:
ans = alph[n % 3] + ans
n //= 3
return ans
def R(N):
tr = conv(N)
if N % 3 == 0:
tr += tr[-2:]
else:
tr += conv(sum(int(x) for x in tr) * 3)
return int(tr, 3)
md = float('inf')
ans = 0
for N in range(4, 1000):
r = R(N)
if abs(826 - r) < md:
md = abs(826 - r)
ans = r
print(ans)
Ответ: \(840\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене