Задание 5. Информатика. ЕГЭ. Статград. 01.04.2025-1

Просмотры: 832
Изменено: 1 апреля 2025

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

  1. Строится троичная запись числа \(N.\)
  2. Далее эта запись обрабатывается по следующему правилу:
    • а) если сумма цифр троичной записи числа \(N\) делится на \(3,\) то в этой записи два левых разряда заменяются на «\(112\)»;
    • б) если сумма цифр троичной записи числа \(N\) на \(3\) не делится, то эта сумма переводится в троичную систему счисления и дописывается в конец числа.
    Полученная таким образом запись является троичной записью искомого числа \(R.\)
  3. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа \(11 = 102_3\) результатом является число \(1122_3 = 44,\) а для исходного числа \(12 = 110_3\) результатом является число \(1102_3 = 38.\)

Укажите максимальное чётное число \(R,\) не превышающее \(679,\) которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.

Решение:

Python


def conv(n):
    ans = ''
    while n:
        ans = str(n % 3) + ans
        n //= 3
    return ans

def R(N):
    tr = conv(N)
    s = sum([int(x) for x in tr])
    if s % 3 == 0:
        tr = '112' + tr[2:]
    else:
        tr += conv(s)
    return int(tr, 3)

#print(R(11), R(12))
print(max(R(x) for x in range(12, 700) if R(x) < 679 and R(x) % 2 == 0))

Ответ: \(662\)