Задача #3044
Алгоритмы
(О. Лысенков) На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится пятеричная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если количество разрядов в записи числа R кратно 2, то запись делится посередине, левая и правая половина записи меняются местами;
б) если количество разрядов в записи числа R не кратно 2, то к ней справа приписывается остаток от деления числа N на 5, после этого запись делится посередине, левая и правая половина записи меняются местами.
Полученная таким образом запись является пятеричной записью искомого числа R.
Например, для исходного числа 21 = результатом работы алгоритма является
Укажите наименьшее число N, для которого результат работы данного алгоритма больше 50.
В ответе это число запишите в десятичной системе счисления.
Решение
Ответ
def cc(n):
s = ''
while n != 0:
s = str(n % 5) + s
n //= 5
return s
def f(n):
s = cc(n)
if len(s) % 2 == 0:
s = s[len(s) // 2:] + s[:len(s) // 2]
else:
s = s + str(n % 5)
s = s[len(s) // 2:] + s[:len(s) // 2]
return int(s,5)
for i in range(1,1000):
if f(i)>50:
print(i)
break