Задание 17859
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом:
- Строится двоичная запись числа N.
- Далее эта запись обрабатывается по следующему правилу:
- если число чётное, то к двоичной записи числа слева дописывается 10
- если число нечётное, то к двоичной записи числа слева дописывается 1 и справа дописывается 01 Полученная таким образом запись является двоичной записью искомого числа R.
- Результат переводится в десятичную систему и выводится на экран.
Укажите максимальное число R, которое может быть результатом работы данного алгоритма, при условии, что N не больше 12. В ответе запишите это число в десятичной системе счисления.
Решение
a = []
for N in range(12):
n = bin(N)[2:] # не забываем про срез
if N % 2 == 0:
n = n + '10'
else:
n = '1' + n + '01'
R = int(n, 2)
a.append(R)
print(max(a))
Разбор работы кода
- Создаём пустой список
a
для хранения значенийR
- Цикл
for N in range(12):
перебирает натуральные числаN < 12
bin(N)[2:]
переводитN
в двоичную систему и убирает приставку'0b'
- Определяем четность
N
:- Если чётное (
N % 2 == 0
), добавляем10
в конец - Если нечётное, добавляем
1
в начало и01
в конец
- Если чётное (
int(n, 2)
преобразует двоичную строку обратно в десятичное числоR
- добавляем R в список
a
- Выводим
max(a)
— максимальноеR