Задание 5. Информатика. ЕГЭ. Поляков-7054
- Просмотры: 823
- Изменено: 1 февраля 2025
(PRO100-ЕГЭ) На вход алгоритма подаётся натуральное число \(N.\) Алгоритм строит по нему новое число \(R\) следующим образом.
- Строится шестеричная запись числа \(N.\)
- Далее эта запись обрабатывается по следующему правилу:
- если число \(N\) делится на \(3,\) то к этой записи дописываются две первые шестеричные цифры;
- если число \(N\) на \(3\) не делится, то остаток от деления на \(3\) умножается на \(10,\) переводится в шестеричную запись и дописывается в конец числа.
Полученная таким образом запись является шестеричной записью искомого числа \(R.\)
Пример. Число \(11_{10} = 15_6\) не делится на \(3,\) поэтому в конец его шестеричной записи \(15_6\) дописывается шестеричная запись числа \((11 \mod 6) \cdot 10 = 20 = 32_6\), так что результатом работы автомата является число \(1532_6 = 416_{10}\). Исходное число \(12_{10} = 20_6\) делится на \(3,\) поэтому в конец шестеричной записи \(20_6\) дописываются её две первых цифры \(20,\) так что результатом работы автомата является число \(2020_6 = 444_{10}\).
Укажите минимальное число \(R,\) большее \(680,\) которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.
Решение:
Python
def conv(N):
ans = ''
while N:
ans = str(N % 6) + ans
N //= 6
return ans
def R(N):
d = conv(N)
if N % 3 == 0:
d += d[:2]
else:
d += conv(N % 3 * 10)
return int(d, 6)
print(min(R(N) for N in range(7, 500) if R(N) > 680))
Ответ: \(694\)