5 номер. Преобразование записей чисел
Алгоритм обработки числа
(О. Лысенков) На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится девятеричная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если девятеричная запись начинается на 7, то все шестёрки в записи меняются на тройки, а все тройки меняются на шестёрки после к числу приписывается 34 слева;
б) если девятеричная запись начинается не на 7,то к записи справа приписывается 45, а первый разряд полученной записи заменяется на 3.
Полученная таким образом запись является девятеричной записью искомого числа R.
Укажите максимальное число N, для которого результатом работы алгоритма является наибольшее число R, меньшее 2876.
В ответе это число запишите в десятичной системе счисления.''
Подсказка
Сначала выполните все шаги для одного N, сохраняя строку после каждого изменения. Затем уточните, что требуется выбрать: N, R или количество значений.
Решение
def cc(n): s = '' while n != 0: s = str(n % 9) + s n //= 9 return s def f(n): s = cc(n) if s[0] == '7': s = s.replace('6','*').replace('3','6').replace('*','3') s = '34' + s else: s += '45' s = '3' + s[1:] return int(s,9) #1 способa = []for i in range(1,100000): if f(i) < 2876: a.append([-f(i),-i])a.sort()print(abs(a[0][1]))#2 способmax_el = float('-inf')min_N = 0for i in range(1,100000): if f(i) < 2876: if max_el <= f(i): max_el = f(i) min_N = iprint(min_N)