На вход алгоритма подаётся натуральное число N > 1. Алгоритм строит по нему новое число R следующим образом:
- Строится двоичная запись числа N.
- Подсчитывается количество нулей, стоящих на нечётных местах и количество единиц, стоящих на чётных в двоичной записи числа N без ведущих нулей. Отсчёт производится слева направо. Старший разряд считать нулевой позицией.
- Результатом становится произведение полученных двух чисел.
При каком наименьшем N в результате работы алгоритма получится R = 12?
for n in range(2, 10000):
s = bin(n)[2:]
s = str(s)
sone = 0
szero = 0
for i in range(len(s)):
if i % 2 != 0 and s[i] == "0":
sone += 1
elif i % 2 == 0 and s[i] == "1":
szero += 1
if abs(sone*szero) == 12:
print(n)
break
Ответ: 85