5 номер. Преобразование записей чисел
Алгоритм обработки числа
(О. Лысенков) На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится шестеричная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если сумма цифр шестеричной записи кратна 5, то все нули в записи меняются на 3, а все 3 меняются на нули, после к числу приписывается 11 слева;
б) если сумма цифр шестеричной записи не кратна 5, то к записи справа приписывается 44, после второй и третий разряд, полученной записи, меняются на 0 и 5 соответственно, разряды нумеруются слева направо, начиная с 1.
Полученная таким образом запись является шестеричной записью искомого числа R.
Укажите максимальное число N, для которого результатом работы алгоритма является наименьшее число R, превышающее 1500.
В ответе это число запишите в десятичной системе счисления.''
Подсказка
Сначала выполните все шаги для одного N, сохраняя строку после каждого изменения. Затем уточните, что требуется выбрать: N, R или количество значений.
Решение
def cc(n): s = '' while n != 0: s = str(n % 6) + s n //= 6 return s def f(n): s = cc(n) sum_digits = sum(map(int,list(s))) if sum_digits % 5 == 0: s = s.replace('0','*').replace('3','0').replace('*','3') s = '11' + s else: s += '44' s = s[0] + '05' + s[3:] return int(s,6) a = []for i in range(1,100000): if f(i) > 1500: a.append([f(i),-i])a.sort()print(abs(a[0][1]))