Алгоритм решения задания 15. Часть 2
Учимся решать 15 задания второго типа
Читать
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Строится троичная запись числа N.
- Далее эта запись обрабатывается по следующему правилу:
- если число N делится на 3, то слева к двоичной записи числа N приписывается «1», а справа «02»;
- если число N на 3 не делится, то остаток от деления на 3 умножается на 4, переводится в троичную запись и дописывается в конец полученной ранее двоичной записи числа N.
Полученная таким образом запись является троичной записью искомого числа R.
- Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 1110 = 1023 результатом является число 102223 = 10710, а для исходного числа 1210 = 1103 это число 1110023 = 35310
Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, меньшее 100.
Правильный ответ:
10
def to_ternary(num):
result = ''
while num:
result += str(num % 3)
num //= 3
return result[::-1]
for N in range(1, 20)[::-1]:
N_tern = to_ternary(N)
remainder = N % 3
if remainder == 0:
N_tern = '1' + N_tern + '02'
else:
N_tern += to_ternary(remainder * 4)
R = int(N_tern, 3)
if R < 100:
print(N)
break
