Задача № 164
На вход алгоритма подаётся натуральное число \( N \). Алгоритм строит по нему новое число R следующим образом.
- Строится двоичная запись числа \( N \).
- Далее эта запись обрабатывается по следующему правилу:
- если число \( N \) делится на 3, то к этой записи справа дописываются две последние двоичные цифры;
- если число \( N \) на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа.
Полученная таким образом запись является двоичной записью искомого числа \( R \).
- Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа \( 9 = 1001_2 \) результатом является число \( 100101_2 = 37 \), а для исходного числа \( 10 = 1010_2 \) это число \( 101011_2 = 43 \).
Укажите минимальное число \( R \), не меньшее, чем 195, которое может быть получено в результате работы алгоритма.
ЕГКР 27 апреля 2024 года (Московский пробник)
Прокрути, чтобы прочитать решение задачи
Ты уверен, что хочешь это сделать?
Удачного чтения!
Решение
Код из видео
# список с возможными результатами
answer = []
# перебираем N
for n in range(1, 195):
# строим двоичную запись
r = bin(n)[2:]
# проверяем кратность
if n % 3 == 0:
# добавляем две последние цифры
r += r[-2:]
else:
# добавляем двоичную запись утроенного остатка
r += bin(n % 3 * 3)[2:]
# переводим из двоичной в десятичную систему счисления
r = int(r, 2)
# если результат не меньше 195, добавляем в список
if r >= 195:
answer.append(r)
# выводим минимальный результат
print(min(answer))