507.py

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

    Строится двоичная запись числа N.

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

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

Например, для исходного числа 12 = 1100(2) результатом является число 1100100(2) = 100,
а для исходного числа 4 = 100(2) это число 10011(2) = 19.

Укажите минимальное число N, после обработки которого с помощью этого алгоритма
получается число R, не меньшее 200.
"""

for N in range(1, 10000):
    binary = bin(N)[2:]  # двоичная запись N

    if N % 3 == 0:  # если N делится на 3
        binary = binary + binary[-3:]  # дописываем 3 последние двоичные цифры
    else:  # если N не делится на 3
        tail = bin((N % 3) * 3)[2:]  # (остаток * 3) в двоичной записи
        binary = binary + tail

    R = int(binary, 2)  # переводим в десятичную систему

    if R >= 200:
        print(N)  # 26
        break
"""
На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R следующим образом.

    Строится двоичная запись числа N.

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

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

Например, для исходного числа 12 = 1100(2) результатом является число 1100100(2) = 100,
а для исходного числа 4 = 100(2) это число 10011(2) = 19.

Укажите минимальное число N, после обработки которого с помощью этого алгоритма
получается число R, не меньшее 200.
"""

for N in range(1, 10000):
    binary = bin(N)[2:]  # двоичная запись N

    if N % 3 == 0:  # если N делится на 3
        binary = binary + binary[-3:]  # дописываем 3 последние двоичные цифры
    else:  # если N не делится на 3
        tail = bin((N % 3) * 3)[2:]  # (остаток * 3) в двоичной записи
        binary = binary + tail

    R = int(binary, 2)  # переводим в десятичную систему

    if R >= 200:
        print(N)  # 26
        break

Репозиторий на GitHub