Задание 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