506.py

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. Строится двоичная запись числа N. Далее эта запись обрабатывается по следующему правилу: a) если число чётное, то к двоичной записи числа слева дописывается 10; б) если число нечётное, то к двоичной записи числа слева дописывается 1 и справа дописывается 01. Полученная таким образом запись является двоичной записью искомого числа R. Результат переводится в десятичную систему и выводится на экран. Например, для исходного числа 4 = 100(2) результатом является число 10100(2) = 20, а для исходного числа 5 = 101(2) это число 110101(2) = 53. Укажите максимальное число N, после обработки которого получается число R, меньшее, чем 30.
"""
На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R следующим образом.

    Строится двоичная запись числа N.
    Далее эта запись обрабатывается по следующему правилу:
    a) если число чётное, то к двоичной записи числа слева дописывается 10;
    б) если число нечётное, то к двоичной записи числа слева дописывается 1 и справа дописывается 01.

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

Например, для исходного числа 4 = 100(2) результатом является число 10100(2) = 20,
а для исходного числа 5 = 101(2) это число 110101(2) = 53.

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

for N in range(1000, 0, -1):
    binary = bin(N)[2:]  # двоичная запись N
    if N % 2 == 0:  # если число чётное
        binary = "10" + binary  # слева дописывается 10
    else:  # если число нечётное
        binary = "1" + binary + "01"  # слева 1 и справа 01

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

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

    Строится двоичная запись числа N.
    Далее эта запись обрабатывается по следующему правилу:
    a) если число чётное, то к двоичной записи числа слева дописывается 10;
    б) если число нечётное, то к двоичной записи числа слева дописывается 1 и справа дописывается 01.

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

Например, для исходного числа 4 = 100(2) результатом является число 10100(2) = 20,
а для исходного числа 5 = 101(2) это число 110101(2) = 53.

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

for N in range(1000, 0, -1):
    binary = bin(N)[2:]  # двоичная запись N
    if N % 2 == 0:  # если число чётное
        binary = "10" + binary  # слева дописывается 10
    else:  # если число нечётное
        binary = "1" + binary + "01"  # слева 1 и справа 01

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

    if R < 30:
        print(N)  # 6
        break

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