OpenFIPI 2.0

5

5

eD8FA7

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

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

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

а) если число N делится на 3, то к этой записи дописываются две последние троичные цифры;

б) если число N на 3 не делится, то остаток от деления умножается на 5, переводится в троичную запись и дописывается в конец числа.

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

3. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа 1110 = 1023 результатом является число 1021013 = 30710, а для исходного числа 1210 = 1103 это число 110103 = 11110.

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

192

def s3(n):
    if n==0: return '0'
    s = ''
    while n>0:
        s = str(n%3) + s
        n = n//3
    return s
m = []
for n in range(1,1000):
    b = s3(n)
    if n%3==0:
        b = b + b[-2] + b[-1]
    else:
        b = b + s3(n%3*5)
    r = int(b,3)
    if r > 180:
        m.append(r)
print(min(m))

Просмотреть отправленные ответы eD8FA7