Задание 5. Информатика. ЕГЭ. Шастин. 13.03.2025

Просмотры: 381
Изменено: 14 марта 2025

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

  1. Строится троичная запись числа \(N.\)
  2. Далее эта запись обрабатывается по следующему правилу:
    • а) если число \(N\) делится на \(3,\) то в начало этой записи дописываются две последние троичные цифры;
    • 6) если число \(N\) на \(3\) не делится, то вычисляется сумма цифр полученной троичной записи, эта сумма переводится в троичную систему счисления и дописывается в начало числа.
    Полученная таким образом запись является троичной записью искомого числа \(R.\)
  3. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа \(11_{10} = 102_3\) результатом является число \(10102_3 = 92_{10},\) а для исходного числа \(12_{10} = 110_3\) это число \(10110_3 = 93_{10}.\) Укажите минимальное нечётное число \(R,\) большее \(418,\) которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.

Решение:

Python


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

def R(N):
    tr = conv(N)
    if N % 3 == 0:
        tr = tr[-2:] + tr
    else:
        tr = conv(sum(int(x) for x in tr)) + tr
    return int(tr, 3)

print(min(R(N) for N in range(10, 500) if R(N) % 2 and R(N) > 418))

Ответ: \(423\)