*(В. Шубинкин) Алгоритм получает на вход натуральное число \(N\) и строит по нему новое число \(R\) следующим образом:
Результат переводится в десятичную систему счисления.
Пример. Алгоритм получает число \(N = 95_{10} = 25_{45}.\) Цифра \(2\) стоит на позиции № 1, цифра \(5\) – на позиции № 2. Сумма цифр на чётных местах равна \(5_{45},\) сумма цифр на нечётных местах равна \(2_{45}.\) Приписывая цифры, получаем число \(2255_{45} = 186530_{10}.\)
Какое наименьшее число может получиться в результате работы алгоритма при вводе \(N > 1000?\) В ответе запишите это число в десятичной системе счисления.
Решение:
Python
from itertools import count
def conv(n):
ans = []
while n:
ans.append(n % 45)
n //= 45
return ans[::-1]
def R(N):
tmp = conv(N)
s = [conv(sum(tmp[1::2])), conv(sum(tmp[::2]))]
s.sort()
tmp += s[1]
if s[0]:
tmp = s[0] + tmp
ans = sum(n * 45**p for n, p in zip(tmp[::-1], count(0)))
return ans
print(min(R(x) for x in range(1001, 10_000)))
Ответ: \(46598\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене