На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится троичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то слева к нему приписывается «1», а справа «02»;
б) если число N на 3 не делится, то остаток от деления на 3 умножается на 4, переводится в троичную запись и дописывается в конец числа.
Полученная таким образом запись является троичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 1110 = 1023 результатом является число 102223 = 10710, а для исходного числа 1210 = 1103 — это число 1110023 = 35310.
Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, не превышающее 250.
Приведём решение на языке Python.
def f(n):
s=''
while n > 0:
s = str(n%3) + s
n //= 3
return s
c = []
for n in range(1000):
s = f(n)
if n%3 == 0:
s = '1' + s + '02'
else:
s = s + f(n%3*4)
r = int(s,3)
if r <= 250:
c.append(n)
print(max(c))
Ответ: 26.

