Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Ростислав Раневский Ученик (114), на голосовании 3 месяца назад
На вход алгоритма подаётся натуральное число N. N может принимать значения от 0 до 10000. Алгоритм строит по нему новое число R следующим образом.

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



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

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

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

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

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

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



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

Нужно очень срочно, заранее спасибо!
Голосование за лучший ответ
Егор Воронин Ученик (52) 4 месяца назад
а как n расшифровывается
Ростислав РаневскийУченик (114) 4 месяца назад
неизвестное число
Исмагил Рустемович Профи (785) 4 месяца назад
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
Александр Цыганок Ученик (107) 4 недели назад
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
Похожие вопросы