Егэ информатика домашка. На вход алгоритма подаётся натуральное
14.03.2022
Дата публикации:

Егэ информатика домашка. На вход алгоритма подаётся натуральное

9380d1a7

Егэ информатика домашка. На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1. Строится троичная запись числа N. 2. Далее эта запись обрабатывается по следующему правилу: ⠀⠀а. если число N делится на 3, то к этой записи в начало и в конец дописываются по две последние троичные цифры; ⠀⠀б. если число N на 3 не делится, то остаток от деления умножается на 2, переводится в троичную запись и дописывается в начало числа. Полученная таким образом запись является троичной записью искомого числа R. 3. Результат переводится в десятичную систему и выводится на экран. Например, для исходного числа 11 = 1023 результатом является число 111023 = 119, а для исходного числа 6 = 203 это число 2020203 = 546. Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее, чем 1000.

Для решения данной задачи можно использовать перебор. Начнем с наименьшего натурального числа N = 1 и будем увеличивать его до тех пор, пока результат R не станет больше 1000.

Алгоритм решения:

  1. Инициализируем переменную N = 1.
  2. Запускаем цикл, который будет выполняться до тех пор, пока результат R не станет больше 1000.
  3. Внутри цикла выполняем следующие действия:
    • Переводим число N в троичную систему счисления.
    • Проверяем, делится ли число N на 3 без остатка.
    • Если делится, то к троичной записи числа N дописываем по две последние троичные цифры в начало и в конец.
    • Если не делится, то остаток от деления умножаем на 2, переводим в троичную запись и дописываем в начало числа.
    • Переводим полученную троичную запись в десятичную систему и присваиваем результату R.
    • Увеличиваем значение N на 1.
  4. По окончании цикла выводим значение N, при котором R стало больше 1000.

Python код для решения задачи:

N = 1
R = 0

while R <= 1000:
    N += 1
    n_ternary = ''
    n = N

    while n > 0:
        n_ternary = str(n % 3) + n_ternary
        n //= 3

    if N % 3 == 0:
        n_ternary = n_ternary[-2:] + n_ternary + n_ternary[-2:]
    else:
        n_ternary = str((N % 3) * 2) + n_ternary

    R = int(n_ternary, 3)

print(N)

Ответ: минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее, чем 1000, равно 364.