S определяется как множество всех положительных целых чисел, чье двоичное представление не имеет последовательных единиц. Найдите лексикографический порядок, то есть количество элементов S меньше или равно ему, данного числа.
например,
ввод: 17
вывод: 9
Объяснение: 8 чисел в наборе меньше 17 — это 1, 2, 4, 5, 8, 9, 10 и 16.
* Вход гарантированно принадлежит множеству S.
Моя попытка:
Если вход представляет собой целую степень числа 2, то это просто проблема динамического программирования, подобная фибоначчи. Однако эта идея больше не работает, если ввод не является целочисленной степенью числа 2. Поэтому я думаю об использовании включения-исключения, но пока не нашел чего-то, что можно было бы запустить за разумное время. Любые подсказки приветствуются.