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

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

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

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

Например, для числа \(10\) троичная запись \(101_3\) преобразуется в запись \(10101_3 = 91,\) для числа \(11\) троичная запись \(102_3\) преобразуется в \(20102_3 = 173.\)

Укажите максимальное значение \(N,\) после обработки которого с помощью этого алгоритма получается число \(R,\) меньшее чем \(100.\)

Решение:

Python


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

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

for N in range(100, 0, -1):
    if R(N) < 100:
        print(N)
        break

Ответ: \(18\)