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

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

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

  1. Строится троичная запись числа \(N.\)
  2. Если число \(N\) делится на \(3,\) к троичной записи слева приписывается \(1,\) а справа – \(02;\) иначе остаток от деления числа на \(3\) умножается на \(4,\) переводится в троичную систему и дописывается в конец троичной записи.
  3. Полученная таким образом запись является троичной записью искомого числа \(R.\)

Например, для числа \(11\) троичная запись \(102_3\) преобразуется в запись \(10222_3 = 107,\) для числа \(12\) троичная запись \(110_3\) преобразуется в \(111002_3 = 353.\) Укажите максимальное значение \(N,\) после обработки которого с помощью этого алгоритма получается число \(R,\) меньшее чем \(199.\)

Решение:

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 = '1' + tr + '02'
    else:
        tr += conv(N % 3 * 4)
    return int(tr, 3)

print(max(N for N in range(1, 200) if R(N) < 199))

Ответ: \(20\)