ЕГЭ · ЗАДАНИЕ 5
Алгоритмы обработки чисел · №19237
Натуральное N. Строится троичная запись N. Если N кратно 3, справа дописывают последние две троичные цифры. Иначе сумму цифр исходной троичной записи умножают на 1, переводят в троичную систему и дописывают справа. R — десятичное значение полученной записи. Найдите минимальное чётное R, большее 220. Ответ запишите в десятичной системе.
Источник задания
Сначала попробуй решить самостоятельно, затем открой разбор. Для автоматической проверки ответа включи JavaScript.
Показать решение по шагам
Разбор решения
Ответ: 222
Сначала постройте R для одного N по ветвям условия. В проверке используем r > 220 and r % 2 == 0; в список кладём r, потому что ответом требуется именно R. Затем берём минимум. В этом алгоритме R ≥ N. Найден кандидат R = 222; при N ≥ 1000 получим R ≥ 1000 > 222. Поэтому больший N не улучшит ответ; внутри диапазона проверяем все результаты, не прерываясь на первом.
def to_base(n, base):
s = ''
while n:
s = str(n % base) + s
n //= base
return s or '0'
def get_r(n):
s = to_base(n, 3)
if n % 3 == 0:
s += s[-2:]
else:
s += to_base(sum(map(int, s)) * 1, 3)
return int(s, 3)
answers = []
for n in range(1, 1000):
r = get_r(n)
if r > 220 and r % 2 == 0:
answers.append(r)
print(min(answers))