Teacher & coder

Задача № 88

На вход алгоритма подаётся натуральное число \( N \). Алгоритм строит по нему новое число R следующим образом.

  1. Строится двоичная запись числа \( N \).
  2. Далее эта запись обрабатывается по следующему правилу:
    1. если число \( N \) делится на 3, то к этой записи дописываются три последние двоичные цифры;
    2. если число \( N \) на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа.

Полученная таким образом запись является двоичной записью искомого числа \( R \).

  1. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа \( 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)

Артём Зинкин

Лучше не гуглить и подумать самостоятельно. Тест можно пройти несколько раз :)
Чтобы поделиться задачей с коллегами или друзьями, отправьте им ссылку :)
Забыл сказать, что у этой задачи есть подробное решение. Посмотрите его :)
Попробуйте решить эту задачу сами и посмотрите наши разборы похожих задач :)
Кстати, на ЕГЭ тоже нельзя копировать :)
Этим материалом удобно поделиться по прямой ссылке :)