На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Строится троичная запись числа N.
- Далее эта запись обрабатывается по следующему правилу:
a) если число N делится на 3, то к этой записи дописываются две последние троичные цифры;
б) если число N на 3 не делится, то остаток от деления умножается на 5, переводится в троичную запись и дописывается в конец числа.
Полученная таким образом запись является троичной записью искомого числа R. - Результат переводится в десятичную систему и выводится на экран.
Укажите минимальное число R, большее 150, которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.
Решение:
Решение на Python:
def tr(x):
s = ''
while x > 0:
s = str(x % 3)+s
x //= 3
return s
otv = []
for N in range(1, 100):
R = tr(N)
if N % 3 == 0:
R = R+R[-2:]
else:
R = R+tr(N % 3*5)
R = int(R, 3)
if R > 150:
otv.append(R)
print(min(otv))
Ответ: 162
Ответ:
162