502.py
На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R:
Строится двоичная запись числа N.
Далее эта запись обрабатывается так:
а) если число нечётное, к двоичной записи
слева дописывается 10, а последние две цифры справа заменяются на 01
б) если число чётное, к двоичной записи
справа дописывается 1, а первые две цифры слева заменяются на 11
Таким образом получается двоичная запись искомого числа R
Результат переводится в десятичную систему и выводится на экран.
Например, результат для исходного числа 10 = 1010(2) → 11101(2)= 29
а для числа 9 = 1001(2) → 101001(2) = 41.
Укажите минимальное число R, которое может быть результатом
этого алгоритма при условии, что N не меньше 42.
В ответе запишите это число в десятичной системе счисления.
"""
На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R:
Строится двоичная запись числа N.
Далее эта запись обрабатывается так:
а) если число нечётное, к двоичной записи
слева дописывается 10, а последние две цифры справа заменяются на 01
б) если число чётное, к двоичной записи
справа дописывается 1, а первые две цифры слева заменяются на 11
Таким образом получается двоичная запись искомого числа R
Результат переводится в десятичную систему и выводится на экран.
Например, результат для исходного числа 10 = 1010(2) → 11101(2)= 29
а для числа 9 = 1001(2) → 101001(2) = 41.
Укажите минимальное число R, которое может быть результатом
этого алгоритма при условии, что N не меньше 42.
В ответе запишите это число в десятичной системе счисления.
"""
for N in range(1000, 42, -1):
binary = bin(N)[2:]
if N % 2 == 0: # если число чётное
binary = binary + "1" # справа дописывается 1
binary = "11" + binary[2:] # первые две цифры слева заменяются 11
else: # если число нечётное
binary = "10" + binary # 10 дописывается ко всей двоичной записи
binary = binary[:-2] + "01" # последние две справа заменяются 01
R = int(binary, 2) # переводим двоичную запись в десятичную
print(R)
"""
Ответ: 97
"""
"""
На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R:
Строится двоичная запись числа N.
Далее эта запись обрабатывается так:
а) если число нечётное, к двоичной записи
слева дописывается 10, а последние две цифры справа заменяются на 01
б) если число чётное, к двоичной записи
справа дописывается 1, а первые две цифры слева заменяются на 11
Таким образом получается двоичная запись искомого числа R
Результат переводится в десятичную систему и выводится на экран.
Например, результат для исходного числа 10 = 1010(2) → 11101(2)= 29
а для числа 9 = 1001(2) → 101001(2) = 41.
Укажите минимальное число R, которое может быть результатом
этого алгоритма при условии, что N не меньше 42.
В ответе запишите это число в десятичной системе счисления.
"""
for N in range(1000, 42, -1):
binary = bin(N)[2:]
if N % 2 == 0: # если число чётное
binary = binary + "1" # справа дописывается 1
binary = "11" + binary[2:] # первые две цифры слева заменяются 11
else: # если число нечётное
binary = "10" + binary # 10 дописывается ко всей двоичной записи
binary = binary[:-2] + "01" # последние две справа заменяются 01
R = int(binary, 2) # переводим двоичную запись в десятичную
print(R)
"""
Ответ: 97
"""