Задача № 88
На вход алгоритма подаётся натуральное число \( N \). Алгоритм строит по нему новое число R следующим образом.
- Строится двоичная запись числа \( N \).
- Далее эта запись обрабатывается по следующему правилу:
- если число \( N \) делится на 3, то к этой записи дописываются три последние двоичные цифры;
- если число \( N \) на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа.
Полученная таким образом запись является двоичной записью искомого числа \( R \).
- Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа \( 12 = 1100_2 \) результатом является число \( 1100100_2 = 100 \), а для исходного числа \( 4 = 100_2 \) это число \( 10011_2 = 19 \).
Укажите минимальное число \( R \), большее 151, которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.

Демонстрационный вариант 2024 года
Прокрути, чтобы прочитать решение задачи
Ты уверен, что хочешь это сделать?
Удачного чтения!
Решение
Напишем код.
minR = 1000
for n in range(1, 151):
R = bin(n)[2:]
if n % 3 == 0:
R += R[-3:]
else:
R += bin((n % 3) * 3)[2:]
R = int(R, 2)
if R > 151:
minR = min(minR, R)
print(minR)