На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R таким образом: 1. Строится троичная запись числа N 2. В полученной записи вычисляется количество цифр 2. Это число переводится в троичный вид и дописывается справа 3. В полученной записи вычисляется количество цифр 1. Это число переводится в троичный вид и дописывается справа 4. В полученной записи вычисляется количество цифр 0. Это число переводится в троичный вид и дописывается справа Полученная таким образом запись является троичной записью искомого числа R. Например, для исходного числа 5 алгоритм пройдет через такие шаги: 123→1213→12123→121203=150. Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, меньшее 10001000. В ответе запишите это число в десятичной системе счисления.
Мой код: def f(n): r = '' sc = '012' while n: r = sc[n % 3] + r n = n // 3 return r m = set() for n in range(1, 1000): r = f(n) k = r.count('2') r = r + f(k) q = r.count('1') r = r + f(q) r = r + '0' r = int(r, 3) if r < 10001000: m.add(n) print(max(m)) Ошибок не выдает, но ответ получаю неверный. Помогите, пожалуйста
новое число R таким образом:
1. Строится троичная запись числа N
2. В полученной записи вычисляется количество цифр 2. Это число переводится
в троичный вид и дописывается справа
3. В полученной записи вычисляется количество цифр 1. Это число переводится
в троичный вид и дописывается справа
4. В полученной записи вычисляется количество цифр 0. Это число переводится
в троичный вид и дописывается справа
Полученная таким образом запись является троичной записью искомого числа R.
Например, для исходного числа 5 алгоритм пройдет через такие шаги:
123→1213→12123→121203=150.
Укажите максимальное число N, после обработки которого с помощью этого
алгоритма получается число R, меньшее 10001000. В ответе запишите это число в
десятичной системе счисления.
Мой код:
def f(n):
r = ''
sc = '012'
while n:
r = sc[n % 3] + r
n = n // 3
return r
m = set()
for n in range(1, 1000):
r = f(n)
k = r.count('2')
r = r + f(k)
q = r.count('1')
r = r + f(q)
r = r + '0'
r = int(r, 3)
if r < 10001000: m.add(n)
print(max(m))
Ошибок не выдает, но ответ получаю неверный. Помогите, пожалуйста