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

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

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

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

Полученная таким образом запись является тринадцатеричной записью искомого числа \(R\). Например, для исходного числа \(77 = 5C_{13}\) результатом является число \(5C48_{13} = 13073\). Укажите число \(N\), после обработки которого с помощью этого алгоритма получается наибольшее число \(R\), меньшее \(6000\).

Решение:

Python


def conv(n):
    alph = '0123456789ABC'
    ans = ''

    while n:
        ans = alph[n % 13] + ans
        n //= 13

    return ans


def R(N):
    alph = '0123456789ABC'
    tr = conv(N)

    for _ in range(2):
        n = sum([int(x, base=13) for x in tr])
        tr = tr + alph[n % 13]
    
    return int(tr, base=13)

N_max = 0
R_ans = 0

for N in range(10, 1500):
    tmp = R(N)
    if R_ans < tmp < 6000:
        R_ans = tmp
        N_max = N

print(N_max)

Ответ: \(34\)