Алгоритм получает на вход натуральное число N > 1 и строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N.
2. Вычисляется количество единиц, стоящих на чётных местах в двоичной записи числа N без ведущих нулей, и количество нулей, стоящих на нечётных местах. Места отсчитываются слева направо (от старших разрядов к младшим, начиная с единицы).
3. Результатом работы алгоритма становится модуль разности полученных двух чисел.
Пример. Дано число N = 39. Алгоритм работает следующим образом:
1. Строится двоичная запись: 3910 = 1001112.
2. Выделяем единицы на чётных и нули на нечётных местах: 100111. На чётных местах стоят две единицы, на нечётных — один ноль.
3. Модуль разности
Результат работы алгоритма R = 1.
При каком наименьшем N в результате работы алгоритма получится R = 5?
Чтобы модуль разности был
Ответ: 1023.
Приведём решение на языке Python.
for n in range(2, 10000):
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
sum_one = 0
sum_zero = 0
for i in range(len(s)):
if i % 2 != 0 and s[i] == "1":
sum_one += 1
elif i % 2 == 0 and s[i] == "0":
sum_zero += 1
if abs(sum_one - sum_zero) == 5:
print(n)
break
Примечание 1.
Обращаем внимание читателей, что в программе умышленно вычисляется количество единиц, стоящих на НЕчётных местах в двоичной записи числа N без ведущих нулей, и количество нулей, стоящих на Чётных местах, в противовес заданию. Связано это с тем, что в задании счет цифр в числе ведут с первой позиции, а в языке Python — с нулевой позиции.
Примечание 2.
Обращаем внимание читателей, что число 511 не подходит. Во-первых, это сразу следует из приведенного выше текстового решения. Если вы еще не прочли его — прочтите. Во-вторых, понятно, что в двоичном числе из девяти единиц 1111111112 стоят

