Задание 5. Информатика. ЕГЭ. Поляков-7406
- Просмотры: 480
- Изменено: 25 ноября 2024
(А. Минак) На вход алгоритма подаётся натуральное число \(N > 143\). Алгоритм строит по нему новое число \(R\) следующим образом.
- Строится запись числа \(N\) в двенадцатеричной системе счисления.
- Далее эта запись обрабатывается по следующему правилу:
а) если \(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\)