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