Алгоритм решения задания 14. Часть 1
Учимся решать 15 задания первого типа
Читать
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Строится троичная запись числа N.
- Далее эта запись обрабатывается по следующему правилу:
- если число N делится на 3, то к этой записи дописываются две последние троичные цифры;
- если число N на 3 не делится, то вычисляется сумма цифр полученной троичной записи, эта сумма переводится в троичную систему счисления и дописывается в конец числа.
Полученная таким образом запись является троичной записью искомого числа R.
- Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 1110 = 1023 результатом является число 102103 = 10210, а для исходного числа 1210 = 1103 это число 110103 = 11110.
Укажите минимальное чётное число R, большее 220, которое может быть получено с помощью описанного алгоритма.
В ответе запишите это число в десятичной системе счисления
def to_ternary(num):
result = ''
while num:
result += str(num % 3)
num //= 3
return result[::-1]
res = []
for N in range(1, 10_000):
# Строим троичную запись
R = to_ternary(N)
# Если число делится на 3
if N % 3 == 0:
# 2 последние цифры
R += R[-2:]
# Если не делится
else:
# Сумма цифр
sum_d = sum(map(int, R))
# Сумму в троичную СС
sum_d = to_ternary(sum_d)
R += sum_d
# Переводим в десятичную
R = int(R, 3)
# Формируем ответ
if R % 2 == 0 and R > 220:
res.append(R)
print(min(res))
