Wprowadzenie
To wyzwanie wymaga ustawienia zer końcowych reprezentacji binarnej liczb całkowitych na 010101…
, najlepiej to wyjaśnić na przykładzie:
Biorąc pod uwagę liczbę całkowitą 400
, pierwszym krokiem jest konwersja do postaci binarnej:
110010000
Jak widzimy, piąty bit jest najmniej znaczący 1
, więc zaczynając od tego, zamieniamy dolne zera na 0101
:
110010101
Na koniec konwertujemy to z powrotem na dziesiętne: 405
Wyzwanie
Biorąc pod uwagę dodatni zwrot / wyjście liczb całkowitych, odpowiednią wynikową wartość wyżej zdefiniowanego procesu.
Zasady
- Ta sekwencja jest zdefiniowana tylko dla liczb całkowitych z co najmniej jednym
1
bitem, więc wejście zawsze będzie ≥ 1 - Zamiast tego możesz traktować dane wejściowe jako ciąg znaków, listę cyfr (dziesiętną)
- Nie musisz obsługiwać nieprawidłowych danych wejściowych
Przypadki testowe
Oto kilka przypadków testowych z krokami pośrednimi (nie musisz ich drukować / zwracać):
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
maksymalna moc 2 dzieląca dane wejściowe, to odpowiedź jest prosta(input) + ceil((2^n - 2)/3)