Top.Mail.Ru
Ответы

Помогите, пожалуйста, исправить код и получить верный ответ

На вход алгоритма подаётся натуральное число 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))
Ошибок не выдает, но ответ получаю неверный. Помогите, пожалуйста

По дате
По рейтингу
Аватар пользователя
Ученик
1мес

В 15-й строке вместо "r + f(r.count('0'))" стоит просто "r = r + '0'"

Аватар пользователя
Ученик
1мес

Аватар пользователя
Мудрец
8мес

ты бы хоть язык написал да