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