Задание 5. Информатика. ЕГЭ. Статград. 28.01.2025-1

Просмотры: 2029
Изменено: 2 февраля 2025

Алгоритм получает на вход натуральное число \(N\) и строит по нему новое число \(R\) следующим образом.

  1. Строится троичная запись числа \(N.\)
  2. В полученной записи все нули заменяются на двойки, все двойки — на нули. Из полученного числа удаляются ведущие нули.
  3. Результат переводится в десятичную систему счисления.
  4. Результатом работы алгоритма становится модуль разности исходного числа \(N\) и числа, полученного на предыдущем шаге.

Пример. Дано число \(N = 35.\) Алгоритм работает следующим образом.

  1. Строим троичную запись числа \(N\): \(35_{10} = 1022_3.\)
  2. Заменяем цифры и удаляем ведущие нули: \(1022 \to 1200.\)
  3. Переводим в десятичную систему: \(1200_3 = 45_{10}.\)
  4. Вычисляем модуль разности: \(| 35 - 45 | = 10.\)

Результат работы алгоритма \(R = 10.\)

При каком наименьшем \(N\) в результате работы алгоритма получится \(R = 1~864~246?\)

Решение:

Python


def conv(n):
    s = ''
    while n:
        s = str(n % 3) + s
        n //= 3
    return s

def R(N):
    tr = conv(N)
    tr = tr.replace('0', '9')
    tr = tr.replace('2', '0')
    tr = tr.replace('9', '2')
    return abs(N - int(tr, 3))

for N in range(10, 10_000_000):
    if R(N) == 1_864_246:
        print(N)
        break

Ответ: \(3~323~607\)