Алгоритм решения задания 14. Часть 1
Учимся решать 15 задания первого типа
Читать
На вход алгоритма подаётся натуральное число N (N> 2). Алгоритм строит по нему новое число R следующим образом.
- Строится троичная запись числа N.
- Далее эта запись обрабатывается по следующему правилу:
- если число N делится на 3, то к этой записи дописываются две последние троичные цифры;
- если число N на 3 не делится, то остаток от деления умножается на 3, переводится в троичную систему и дописывается в конец числа.
Полученная таким образом запись является троичной записью искомого числа R.
- Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 610 = 203 результатом является число 20203 = 6010, а для исходного числа 410 = 113 это число 11103 = 3910.
Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число не превышающее 150.
Правильный ответ:
16
def to_ternary(num):
result = ''
while num:
result += str(num % 3)
num //= 3
return result[::-1]
for N in range(3, 100)[::-1]:
R = to_ternary(N)
if N % 3 == 0:
R += R[-2:]
else:
R += to_ternary((N % 3) * 3)
R = int(R, 3)
if R <= 150:
print(N)
break
