Вступ
Цей виклик вимагає від вас встановити проміжні нулі цілого бінарного представлення на 010101…
це, найкраще пояснити на прикладі:
Враховуючи ціле число 400
, перший крок - перетворити його на бінарне:
110010000
Як ми бачимо, п'ятий біт є найменш значущим 1
бітом, тому, починаючи звідти, ми замінюємо нижні нулі на 0101
:
110010101
Нарешті ми перетворюємо це назад у десятковий: 405
Виклик
За умови позитивного цілого повернення / виведення відповідне отримане значення вищеописаного процесу.
Правила
- Ця послідовність визначена лише для цілих чисел, що мають принаймні один
1
біт, тому вхід завжди буде ≥ 1 - Ви можете замість цього ввести рядок як рядок, список цифр (десяткових)
- Вам не доведеться обробляти недійсні введення
Тестові шафи
Ось ще кілька тестів із посередницькими кроками (їх не потрібно друкувати / повертати):
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)