Егэ информатика домашка. На вход алгоритма подаётся натуральное
Егэ информатика домашка. На вход алгоритма подаётся натуральное число 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.
Алгоритм решения:
- Инициализируем переменную N = 1.
- Запускаем цикл, который будет выполняться до тех пор, пока результат R не станет больше 1000.
- Внутри цикла выполняем следующие действия:
- Переводим число N в троичную систему счисления.
- Проверяем, делится ли число N на 3 без остатка.
- Если делится, то к троичной записи числа N дописываем по две последние троичные цифры в начало и в конец.
- Если не делится, то остаток от деления умножаем на 2, переводим в троичную запись и дописываем в начало числа.
- Переводим полученную троичную запись в десятичную систему и присваиваем результату R.
- Увеличиваем значение N на 1.
- По окончании цикла выводим значение 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.