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