Informacje o przedstawicielstwach Zeckendorf / Base Fibonacci Numbers
Jest to system liczbowy, który wykorzystuje liczby Fibonacciego jako podstawę. Liczby składają się z 0 i 1, a każda 1 oznacza, że liczba zawiera odpowiednią liczbę Fibonacciego, a 0 oznacza, że nie.
Na przykład przekonwertujmy wszystkie liczby naturalne <= 10 na podstawową liczbę Fibonacciego.
1 stanie się 1, ponieważ jest to suma 1, która jest liczbą Fibonacciego,
2 stanie się 10, ponieważ jest to suma 2, która jest liczbą Fibonacciego, i nie potrzebuje 1, ponieważ już osiągnęliśmy pożądaną sumę.
3 stanie się 100, ponieważ jest to suma 3, która jest liczbą Fibonacciego i nie potrzebuje 2 lub 1, ponieważ już osiągnęliśmy pożądaną sumę.
- 4 stanie się 101, ponieważ jest to suma [3,1], z których oba są liczbami Fibonacciego.
- 5 stanie się 1000, ponieważ jest to suma 5, która jest liczbą Fibonacciego, i nie potrzebujemy żadnej z pozostałych liczb.
- 6 stanie się 1001, ponieważ jest to suma liczb Fibonacciego 5 i 1.
- 7 stanie się 1010, ponieważ jest to suma liczb Fibonacciego 5 i 2.
- 8 stanie się 10000, ponieważ jest to liczba Fibonacciego.
- 9 stanie się 10001, ponieważ jest to suma liczb Fibonacciego 8 i 1.
- 10 stanie się 10010, ponieważ jest to suma liczb Fibonacciego 8 i 2.
Przekształćmy losową podstawową liczbę Fibonacciego, 10101001010 na dziesiętną: Najpierw piszemy odpowiednie liczby Fibonacciego. Następnie obliczamy sumę liczb poniżej 1.
1 0 1 0 1 0 0 1 0 1 0
144 89 55 34 21 13 8 5 3 2 1 -> 144+55+21+5+2 = 227.
Przeczytaj więcej o liczbach Fibonacciego podstawowego: link , ma również narzędzie, które konwertuje zwykłe liczby całkowite na bazowe Fibonacciego. Możesz z tym eksperymentować.
Teraz pytanie:
Twoim zadaniem jest pobranie liczby w reprezentacji Zeckendorfa i wyprowadzenie jej wartości dziesiętnej.
Dane wejściowe to ciąg znaków, który zawiera tylko 0 i 1 (chociaż dane wejściowe można przyjmować w dowolny sposób).
Wypisuje jedną liczbę dziesiętną.
Przypadki testowe: (w formacie wejście-> wyjście)
1001 -> 6
100101000 -> 73
1000000000 -> 89
1001000000100100010 -> 8432
1010000010001000100001010000 -> 723452
To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach.
Uwaga: Dane wejściowe nie będą zawierać żadnych początkowych zer lub kolejnych zer.