To był inspirowany przez Problem 13 - Non-Powtarzanie Binary z niedawnym konkursie HP CodeWars.
Powiedzmy, że weźmy losową liczbę dziesiętną
727429805944311
i spójrz na jego reprezentację binarną:
10100101011001011111110011001011101010110111110111
Teraz podziel binarną reprezentację na podsekwencje, gdzie cyfry 0
i 1
naprzemiennie.
1010 010101 10 0101 1 1 1 1 1 10 01 10 0101 1 1010101 101 1 1 1 101 1 1
I zamień każdą podsekwencję z powrotem na dziesiętną.
10 21 2 5 1 1 1 1 1 2 1 2 5 1 85 5 1 1 1 5 1 1
Zadanie
Weź jedną dodatnią liczbę całkowitą jako dane wejściowe i wyjściowe, a następnie wyślij sekwencję liczb całkowitych dodatnich uzyskanych w powyższym procesie.
Detale
- Dane wejściowe i wyjściowe muszą być dziesiętne lub jednostkowe.
- Liczby na wyjściu muszą być rozdzielone w rozsądny, czytelny dla człowieka sposób, i muszą być w postaci dziesiętnej lub jedności. Brak ograniczeń białych znaków. Prawidłowe style wyjściowe:
[1,2,3]
,1 2 3
,1\n2\n3
gdzie\n
są literalne znaki nowej linii, itp
Przypadki testowe
Input | Output
0 | 0
1 | 1
2 | 2
3 | 1 1
4 | 2 0
5 | 5
6 | 1 2
7 | 1 1 1
8 | 2 0 0
9 | 2 1
10 | 10
50 | 1 2 2
100 | 1 2 2 0
1000 | 1 1 1 1 10 0 0
10000 | 2 1 1 2 0 2 0 0 0
12914 | 1 2 2 1 1 2 2
371017 | 5 42 10 2 1
Uwaga dodatkowa: wszystkie liczby na wyjściu powinny mieć postać (2^k-1)/3
lub 2*(2^k-1)/3
. Oznacza to, że w OEIS 0 1 2 5 10 21, 42, 85, 170, ...
jest A000975 .
|tac
pozostanie w mojej odpowiedzi :)