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

Просмотры: 1138
Изменено: 25 ноября 2024

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

  1. Строится запись числа \(N\) в троичной системе счисления.
  2. Далее эта запись обрабатывается по следующему правилу:
    а) если число \(N\) четное, то слева дописывается \(2\), а справа — удвоенное значение младшего разряда в троичной системе счисления;
    б) если число \(N\) нечетное, то справа дописывается \(2\), а слева — удвоенное значение старшего разряда в троичной системе счисления.

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

Например, для исходного числа \(14 = 112_3\) результатом является \(211211_3 = 616\). Укажите минимальное значение большее \(100\), которое может получиться в результате работы алгоритма.

Решение:

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:
        tmp = '2' + tr + conv(int(tr[-1]) * 2)
    else:
        tmp = conv(int(tr[0]) * 2) + tr + '2'
    return int(tmp, base=3)


a = [R(N) for N in range(1, 100) if R(N) > 100]

print(min(a))

Ответ: \(131\)