Задание 5. Информатика. ЕГЭ. Поляков-6884
- Просмотры: 73
- Изменено: 20 февраля 2025
(К. Багдасарян) Алгоритм получает на вход натуральное число \(N > 11\) и строит по нему новое число \(R\) следующим образом:
- Строится запись числа \(N\) в системе счисления с основанием \(12.\)
- Далее эта запись обрабатывается по следующему правилу:
- а) если число \(N\) делится на \(12,\) то в конец дописываются две последние цифры двенадцатеричной записи числа;
- б) если число \(N\) на \(12\) не делится, то остаток от его деления на \(12\) умножается на \(9,\) переводится в систему счисления с основанием \(12\) и дописывается в конец числа.
Укажите минимальное число \(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\)