• Предмет: Информатика
  • Автор: sakhaykt123456789
  • Вопрос задан 6 лет назад

Задание 5 На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1. Строится двоичная запись числа N. 2. К этой записи дописываются справа ещё несколько разрядов по следующему правилу: а) Если Nчётное, то к нему справа приписывается в двоичном виде сумма цифр его двоичной записи; б) Если N нечётное, то к нему справа приписываются два нуля, а слева единица. Полученная таким образом запись (в ней как минимум на один разряд больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Например, запись числа 1101 будет преобразована в 11110100. Укажите такое наименьшее число N, для которого результат работы данного алгоритма больше числа 215. В ответе это число запишите в десятичной системе счисления.​


vimmortal2: какой язык?
sakhaykt123456789: здравствуйте

Ответы

Ответ дал: badnsnus
1

Ответ: Тут в задание опечатка скорее всего

Если делать по примеру из задания, будет такой код:

for i in range(20):

   n = i

   n = bin(n)[2:]

   sum = 0

   if int(n) % 2 == 0:

       sum = str(n).count('1')

       sum = bin(sum)[2:]

       r = n + sum

   else:

       r = '11' + n + '00'

   r = int(r, 2)

   if r > 215:

       print(i)

Если делать по условию задание, будет такой код:

for i in range(30):

   n = i

   n = bin(n)[2:]

   sum = 0

   if int(n) % 2 == 0:

       sum = str(n).count('1')

       sum = bin(sum)[2:]

       r = n + sum

   else:

       r = '1' + n + '00'

   r = int(r, 2)

   if r > 215:

       print(i)

Вас заинтересует