Натхненний четвертою проблемою з BMO2 2009 .
Давши додатне ціле число n як вхід чи параметр, поверніть кількість натуральних чисел, бінарні подання яких є блоками у бінарному розширенні n .
Наприклад, 13 -> 6, оскільки 13 у двійковій формі дорівнює 1101 і має підрядки 1101, 110, 101, 11, 10, 1
. Ми не рахуємо двійкові числа, які починаються з нуля, і не рахуємо нуль сам.
Випробування
13 -> 6
2008 -> 39
63 -> 6
65 -> 7
850 -> 24
459 -> 23
716 -> 22
425 -> 20
327 -> 16
Ви можете взяти n як будь-яке з наступного:
- ціле число
- список правдивих / хибних значень для двійкового подання
- рядок для двійкового подання
- базовий рядок 10 (хоча я не впевнений, чому хтось це зробив)
Зробіть свій код якомога коротшим.