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

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

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

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

Полученная таким образом запись является двенадцатеричной записью искомого числа \(R\). Например, для исходного числа \(204 = 150_{12}\) результатом является число \(150150_{12} = 352716\), а для исходного числа \(275 = 1AB_{12}\) это число \(291AB_{12} = 57299\). Укажите такое число \(N\), после обработки которого с помощью этого алгоритма получится наибольшее число \(R\), которое меньше \(58000\).

Решение:

Python


def conv(n):
    alph = '0123456789AB'
    ans = ''
    while n:
        ans = alph[n % 12] + ans
        n //= 12
    return ans

def R(N):
    tw = conv(N)
    if N % 12 == 0:
        tmp = tw + tw[-3:]
    else:
        tmp = conv(N % 12 * 3) + tw
    return int(tmp, base=12)

R_max = 0
N_ans = 0

for N in range(144, 1500):
    t = R(N)
    if R_max < t < 58000:
        R_max = t
        N_ans = N

print(N_ans)

Ответ: \(971\)