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

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

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

  1. Строится троичная запись числа \(N.\)
  2. К этой записи дописываются разряды по следующему правилу. Если количество четных цифр в полученной записи больше чем нечетных, слева дописывается \(22,\) иначе \(11.\)
  3. Полученная таким образом запись является троичной записью искомого числа \(R.\)

Например, для числа \(18\) троичная запись \(200_3\) преобразуется в запись \(22200_3 = 234,\) для числа \(22\) троичная запись \(211_3\) преобразуется в \(11211_3 = 130.\)

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

Решение:

Python


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

def R(N):
    tn = conv(N)
    if tn.count('1') < len(tn) - tn.count('1'):
        tn = '22' + tn
    else:
        tn = '11' + tn
    return int(tn, 3)

print(min(R(N) for N in range(11, 100) if R(N) > 100))

Ответ: \(120\)