Задача #3123

Алгоритмы

Уровень ЕГЭ

(О. Лысенков) На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится троичная запись числа N.

2. Далее эта запись обрабатывается по следующему правилу:

а) если сумма цифр троичная записи кратна 4, то все единицы в записи меняются на 2, а все 2 меняются на единицы, после к числу приписывается 10 слева;

б) если сумма цифр троичной записи не кратна 4, то к записи справа приписывается 20, после второй и третий разряд, полученной записи, меняются на 0 и 2 соответственно, разряды нумеруются слева направо, начиная с 1.

Полученная таким образом запись является троичной записью искомого числа R.

Укажите максимальное число N, для которого результатом работы алгоритма является наименьшее число R, превышающее 302.

В ответе это число запишите в десятичной системе счисления.

Ответ
Войдите, чтобы история ответов и статистика сохранялись.
Решение Нажми, чтобы открыть

Ответ

51
def cc(n):
s = ''
while n != 0:
s = str(n % 3) + s
n //= 3
return s

def f(n):
s = cc(n)
sum_digits = sum(map(int,list(s)))
if sum_digits % 4 == 0:
s = s.replace('1','*').replace('2','1').replace('*','2')
s = '10' + s
else:
s += '20'
s = s[0] + '02' + s[3:]
return int(s,3)

mi = float('inf')
ans = 0
for i in range(1,100000):
if f(i) > 302:
if mi >= f(i):
mi = f(i)
ans = i
print(ans)
Быстрый переход
Перейти к задаче