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

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

(К. Багдасарян) Алгоритм получает на вход натуральное число \(N > 11\) и строит по нему новое число \(R\) следующим образом:

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

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

Решение:

Python


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

def R(N):
    n12 = conv(N)
    n12 += n12[-2:] if n12[-1] == '0' else conv(int(n12[-1], 12) * 9)
    return int(n12, 12)

print(min(R(x) for x in range(12, 300) if R(x) > 300))

Ответ: \(309\)