Алгоритм получает на вход натуральное число N и строит по нему новое число R следующим образом.
1. Строится троичная запись числа N.
2. В полученной записи все нули заменяются на двойки, все двойки — на нули. Из полученного числа удаляются ведущие нули.
3. Результат переводится в десятичную систему счисления.
4. Результатом работы алгоритма становится модуль разности исходного числа N и числа, полученного на предыдущем шаге.
Пример. Дано число N = 35. Алгоритм работает следующим образом.
1. Строим троичную запись числа N: 3510 = 10223.
2. Заменяем цифры и удаляем ведущие нули: 1022 → 1200.
3. Переводим в десятичную систему: 12003 = 4510.
4. Вычисляем модуль разности: |35 − 45| = 10.
Результат работы алгоритма R = 10.
При каком наименьшем N в результате работы алгоритма получится R = 1 864 246.
Приведём решение задачи на языке Python.
for N in range(1864245, 10**10):
s = ''
while N > 0:
s += str(N%3)
N //= 3
s = s[::-1]
R = s.replace('0','*').replace('2','0').replace('*','2')
if abs(int(s,3) - int(R,3)) == 1864246:
print(int(s,3))
break
Ответ: 3323607.

