def build_number_r(n):
# Переводим число N в двоичное представление
binary_n = bin(n)[2:]
# Обработка числа в соответствии с условиями
if n % 3 == 0:
# Дописываем в конец трри последние двоичные цифры
binary_r = binary_n + binary_n[-3:]
else:
# Остаток от деления умножаем на 3 и переводим в двоичную запись
remainder = (n % 3) * 3
binary_remainder = bin(remainder)[2:]
binary_r = binary_n + binary_remainder
# Переводим результат в десятичную систему
r = int(binary_r, 2)
return r
# Начальное значение N
N = 1
# Искомое число R должно быть больше 151
while True:
R = build_number_r(N)
if R > 151:
print(f"The minimum number R that is greater than 151 is: {R}")
break
N += 1
следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи дописывается три последние
двоичные цифры;
б) если число N на 3 не делится, то остаток от деления умножается на 3, переводится
в двоичную запись и дописывается в конец числа
Полученная таким образом запись является двоичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Укажите минимальное число R, большее 151, которое может быть получено с помощью
описанного алгоритма. В ответе это число запишите в десятичной системе счисления.