№5
Пример решения: иные системы счисления
Алгоритмы и исполнители
Иные СС. Пример решения
№ 9774 Основная волна 20.06.23 (Уровень: Средний)
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится троичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи дописываются две последние троичные цифры;
б) если число N на 3 не делится, то остаток от деления умножается на 5, переводится в троичную запись и дописывается в конец числа.
Полученная таким образом запись является троичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 11 = 1023 результатом является число 1021013 = 307, а для исходного числа 12 = 1103 это число 110103 = 111.
Укажите минимальное число R, большее 133, которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.
def f3(x): # используем отдельную функцию для перевода в троичную СС
r = ''
while x > 0:
r = str(x % 3) + r
x //= 3
return r or '0'
res = []
for n in range(1, 10000):
nt = f3(n)
if n % 3 == 0:
nt += nt[-2:]
else:
nt += f3((n % 3) * 5)
r = int(nt, 3)
if r > 133: res.append(r)
print(min(res))