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