Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Помогите пожалуйста (программирование python)

На вход алгоритма подаётся натуральное число N. N может принимать значения от 0 до 10000. Алгоритм строит по нему новое число R следующим образом.

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



К этой записи дописываются ещё несколько разрядов по следующему правилу: если N чётное, то к нему справа дописывается 01, если N нечетное – слева дописывается 11 и справа 0;

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

Пример. Дано число N = 13. Алгоритм работает следующим образом:

Двоичная запись числа N: 1101 .

Число нечетное, следовательно слева дописываем 11 , справа 0 → 1111010 .

На экран выводится число 122.



Для какого наименьшего значения N возможно, что в результате работы программы на экране появилось число, большее 1021.

Нужно очень срочно, заранее спасибо!

По дате
По рейтингу
Аватар пользователя
Профи

def binary_to_decimal(binary):
decimal = 0
for digit in binary:
decimal = decimal * 2 + int(digit)
return decimal

def apply_algorithm(N):
binary_N = bin(N)[2:]
if N % 2 == 0:
new_binary = binary_N + '01'
else:
new_binary = '11' + binary_N + '0'
return binary_to_decimal(new_binary)

for N in range(10001):
result = apply_algorithm(N)
if result > 1021:
print(f'Для N = {N}, результат равен {result}')
break

Аватар пользователя
Ученик
10мес

for n in range (0, 10001):
s = bin(n)[2:]
s=str(s)
if n%2 ==0:
s+='01'
else:
s ='11' + s + '0'
r = int(s,2)
if r>1021:
print(n)
break

Аватар пользователя
Ученик

а как n расшифровывается