Вступление
Эта задача требует от вас установить конечные нули двоичного представления целых чисел 010101…
, это лучше всего объяснить на примере:
Учитывая целое число 400
, первый шаг должен преобразовать это в двоичный файл:
110010000
Как мы видим, пятый бит является наименее значимым 1
битом, поэтому начиная с него мы заменяем младшие нули на 0101
:
110010101
Наконец, мы конвертируем это обратно в десятичное: 405
Вызов
Дано целое положительное число вернуть / вывести соответствующее результирующее значение определенного выше процесса.
правила
- Эта последовательность определена только для целых чисел хотя бы с одним
1
битом, поэтому входное значение всегда будет ≥ 1 - Вы можете взять ввод в виде строки, список цифр (десятичных) вместо
- Вам не нужно обрабатывать неверные данные
Testcases
Вот еще несколько тестов с промежуточными шагами (их не нужно распечатывать / возвращать):
In -> … -> … -> Out
1 -> 1 -> 1 -> 1
2 -> 10 -> 10 -> 2
3 -> 11 -> 11 -> 3
4 -> 100 -> 101 -> 5
24 -> 11000 -> 11010 -> 26
29 -> 11101 -> 11101 -> 29
32 -> 100000 -> 101010 -> 42
192 -> 11000000 -> 11010101 -> 213
400 -> 110010000 -> 110010101 -> 405
298 -> 100101010 -> 100101010 -> 298
n
максимальная сила 2, которая делит вход, то ответ прост(input) + ceil((2^n - 2)/3)