5 номер. Преобразование записей чисел
Преобразование троичной записи
(Е.Джобс) Автомат принимает на вход число и преобразует его по следующему алгоритму.
1) Число переводится в троичную систему счисления,
2) Полученное число преобразуется по следующему алгоритму:
a. Если число четное, то слева дописывается 2, справа значение младшего разряда, увеличенного в 2 раза (в троичной системе счисления),
b. Если число нечетное, то справа дописывается 2, слева удвоенное значение старшего разряда (в троичной системе счисления),
3) Полученное троичное число переводится в десятичную систему счисления и выводится на экран.
Укажите минимальное значение большее 100, которое может являться результатом работы автомата.
Подсказка
Сначала выполните все шаги для одного N, сохраняя строку после каждого изменения. Затем уточните, что требуется выбрать: N, R или количество значений.
Решение
def tr(x): s = '' while x > 0: s = str(x % 3) + s x //= 3 return s for n in range(1, 100): s = tr(n) if n % 2 == 0: s = '2' + s + tr(2*(n % 3)) else: s = tr(2*int(s[0])) + s + '2' r = int(s, 3) if r > 100: print(r)# выбираем минимальное выведенное число Полный разбор