Задание 5. Информатика. ЕГЭ. Поляков-7055

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

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

  1. Строится троичная запись числа \(N.\)
  2. К этой записи дописываются справа ещё несколько разрядов по следующему правилу:
    1. если \(N\) чётное, то к нему справа приписываются два нуля, а слева единица;
    2. если \(N\) нечётное, то к нему справа приписывается в троичном виде сумма цифр его троичной записи.

Полученная таким образом запись (в ней как минимум на один разряд больше, чем в записи исходного числа \(N\)) является троичной записью искомого числа \(R.\)

Например, исходное число \(4_{10} = 11_3\) преобразуется в число \(11100_3 = 117_{10}\), а исходное число \(7_{10} = 21_3\) преобразуется в число \(2110_3 = 66_{10}\).

Укажите такое наименьшее число \(N,\) для которого число \(R\) больше числа \(168.\) В ответе запишите это число в десятичной системе счисления.

Решение:

Python


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

def R(N):
    tr = conv(N)
    if N % 2 == 0:
        tr = '1' + tr + '00'
    else:
        tr += conv(sum(int(x) for x in tr))
    return int(tr, 3)


for N in range(3, 100):
    if R(N) > 168:
        print(N)
        break

Ответ: \(10\)