Условие
Источник задания: kompege.ru — 10707
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Строится шестеричная запись числа N.
- Далее эта запись обрабатывается по следующему правилу:
- если число N делится на 3, то к этой записи дописываются две первые шестеричные цифры;
- если число N на 3 не делится, то остаток от деления на 3 умножается на 10, переводится в шестеричную запись и дописывается в конец числа.
Полученная таким образом запись является шестеричной записью искомого числа R.
- Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 1110 результатом является число 41610, а для исходного числа 1210 это число 44410.
Укажите минимальное число R, большее 680, которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.
Решение
Листинг программы
def v6(x):
ss6 = '012345'
r = ''
while x > 0:
r = ss6[x % 6] + r
x //= 6
return r
sp = []
for n in range(1, 680):
r = v6(n)
if n % 3 == 0:
r += r[0:2]
else:
r += v6((n % 3) * 10)
r = int(r, 6)
if r > 680:
sp.append(r)
print(min(sp))