Задача #2887
Алгоритмы
(О. Лысенков) На вход программы подаётся натуральное число N.vПрограмма преобразует это число в новое число R следующим образом:
1.Строится пятеричная запись числа N.
2.Далее эта запись обрабатывается согласно следующему алгоритму:
а. Если N чётное, то справа дописывается значение младшего разряда пятеричной записи, увеличенное в 3 раза и записанное в пятеричной системе счисления.
б. Если N нечётное, то первая и последняя цифра в числе меняются местами, после справа дописывается 1.
3. Из записи удаляются незначащие нули.
Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, содержащее ровно 4 значащих нуля в пятеричной записи.
Войдите, чтобы история ответов и статистика сохранялись.
Решение
Ответ
250
def perevod(n):
if n == 0:
return '0'
s = ''
while n != 0:
s = str(n % 5) + s
n //= 5
return s
def f(n):
s = perevod(n)
if n % 2 == 0:
s = s + perevod(int(s[-1],5) * 3)
else:
if len(s) == 1:
s = s
else:
s = s[-1] + s[1:-1] + s[0]
s += '1'
return perevod(int(s,5)) #избавляемся от незначащих нулей
for i in range(1,10000):
if f(i).count('0') == 4:
print(i)
break