🎉 Добавлен материал по 9 заданию
ЕГЭ
Задания
Задание 5
14331

Задание 14331

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

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

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

    • а) если сумма цифр этой записи делится на 3, то к этой записи справа дописывается «212»
    • б) если сумма цифр на 3 не делится, то она умножается на 2, переводится в троичную запись и дописывается в конец числа

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

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

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

Решение

z14331.py
def f(n):
    result = ""
    while n != 0:
        result = str(n % 3) + result
        n = n // 3
    return result
 
a = []
for N in range(1000):
    n = f(N)
 
    if sum(map(int, n)) % 3 == 0:
        n = n + '212'
    else:
        n = n + f(sum(map(int, n)) * 2)
    
    R = int(n, 3)
    if R > 490:
        a.append(R)
print(min(a))

Разбор кода

  1. Функция переводит входное число в 3-СС, разбор функции -> перевод в разные СС

  2. После проверяем кратна ли сумма цифр 3 при помощи конструкции -> sum(map(int, n)) % 3 == 0, где:

    • функция map(тип данных, строка/список) которая преобразует каждый элемент в нужный тип данных
    • функция sum(элементы типа int) суммирует все элементы, которые мы передаем в функцию
  3. В пункте б) мы передаем сумму цифр умноженную на 2 в функцию f -> f(sum(map(int, n)) * 2)

  4. В конце переводим число в 10 СС через функцию int и проверяем, если больше 490, то добавляем его в список

  5. Выводим минимальное число из списка через функцию min()