Информатика. ЕГЭ
Задания для подготовки
Задачи разных лет из реальных экзаменов, демо-вариантов, сборников задач и других источников
Задание 5. Информатика. ЕГЭ. Поляков-8212
- Просмотры: 1423
- Изменено: 26 декабря 2025
(О. Лысенков) На вход алгоритма подаётся натуральное число \(N.\) Алгоритм строит по нему новое число \(R\) следующим образом.
- Строится троичная запись числа \(N.\)
- Далее эта запись обрабатывается по следующему правилу:
- а) если сумма цифр троичной записи кратна \(4,\) то все единицы в записи меняются на \(2,\) а все цифры \(2\) меняются на единицы, а затем к числу слева приписывается \(10;\)
- б) если сумма цифр троичной записи не кратна \(4,\) то к записи справа приписывается \(20,\) а затем второй и третий разряд в полученной записи меняются на \(0\) и \(2\) соответственно.
- Полученная таким образом запись является троичной записью искомого числа \(R.\)
Укажите максимальное число \(N,\) для которого результатом работы алгоритма является наименьшее число \(R,\) превышающее \(302.\) В ответе это число запишите в десятичной системе счисления.
Решение:
Python
def conv(n):
alph='012'
ans = ''
while n:
ans = alph[n % 3] + ans
n //= 3
return ans
def R(N):
tr = conv(N)
s = sum(int(x) for x in tr)
if s % 4 == 0:
tr = tr.replace('1', 'x').replace('2', '1').replace('x', '2')
tr = '10' + tr
else:
tr += '20'
tr = tr[0] + '02' + tr[3:]
return int(tr, 3)
mr = float('inf')
ans = 0
for n in range(1, 100000):
r = R(n)
if 302 < r <= mr:
mr = r
ans = n
print(ans)
Ответ: \(51\)
Обсуждение задания
Здесь пока нет ни одного комментария. Будьте первым!


