На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1) Строится двоичная запись числа N.
2) Складываются все цифры двоичной записи числа. Если сумма четная, то в конец числа (справа) дописывается 1, а если нечетная, то дописывается 0. Например, запись числа 10 преобразуется в запись 100;
3) К полученному результату применяется еще раз пункт 2 этого алгоритма.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите количество чисел R, которые могут быть получены в результате работы этого алгоритма, и лежат в диапазоне 16 ≤ R ≤ 32.
Ответ
5/5 (1 оценка)
0
pinguinbird 3 года назад
Светило науки - 510 ответов - 0 раз оказано помощи

Для ручного ввода числа:

a = int(input('Введите число: '))

b = bin(a)[2:]

print(b)

if b.count('1')%2 == 0:

 b+='10'

else:

 b+='00'

print(b)

print(int(b, base=2))

Числа, получившиеся в интервале от 16 до 32:

def getNumber(x):

 b = bin(x)[2:]

 print(b)

 if b.count('1')%2 == 0:

   b+='10'

 else:

   b+='00'

 print(b)

 return int(b, base=2)

i=1

k=0

count=0

while k<=32:

 print(i)

 k=getNumber(i)

 print(k)

 print()

 i+=1

 if 16 <= k <= 32: count+=1

print(f'Количество выходных чисел в промежутке от 16 до 32 равно {count}')

Ответ: Количество выходных чисел в промежутке от 16 до 32 равно 5