№5

Пример решения: иные системы счисления

Алгоритмы и исполнители

Иные СС. Пример решения

№ 9774 Основная волна 20.06.23 (Уровень: Средний)

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится троичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи дописываются две последние троичные цифры;
б) если число N на 3 не делится, то остаток от деления умножается на 5, переводится в троичную запись и дописывается в конец числа.
Полученная таким образом запись является троичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа 11 = 1023 результатом является число 1021013 = 307, а для исходного числа 12 = 1103 это число 110103 = 111.
Укажите минимальное число R, большее 133, которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.

def f3(x): # используем отдельную функцию для перевода в троичную СС
    r = ''
    while x > 0:
        r = str(x % 3) + r
        x //= 3
    return r or '0'
res = []
for n in range(1, 10000):
    nt = f3(n)
    if n % 3 == 0:
        nt += nt[-2:]
    else:
        nt += f3((n % 3) * 5)
    r = int(nt, 3)
    if r > 133: res.append(r)
print(min(res))

← К списку шпаргалок