tło
Większość z was wie, co to jest liczba Fibonacciego . Niektórzy z was mogą wiedzieć, że wszystkie dodatnie liczby całkowite mogą być reprezentowane jako suma jednej lub więcej wyraźnych liczb Fibonacciego, zgodnie z twierdzeniem Zeckendorfa . Jeśli liczba wyrażeń w optymalnej reprezentacji liczb całkowitych Zeckendorfa jest liczbą n
Fibonacciego, nazwiemy n
„potajemnie” Fibonacciego.
Na przykład:
139 = 89 + 34 + 13 + 3
This is a total of 4 integers. Since 4 is not a Fibonacci number, 139 is not secretly Fibonacci
140 = 89 + 34 + 13 + 3 + 1
This is a total of 5 integers. Since 5 is a Fibonacci number, 140 is secretly Fibonacci
Notatki
- Optymalną reprezentację Zeckendorfa można znaleźć za pomocą chciwego algorytmu. Po prostu weź największą liczbę Fibonacciego <= n i odejmij ją od n, aż osiągniesz 0
- Wszystkie liczby Fibonacciego mogą być reprezentowane jako suma 1 liczby Fibonacciego (sama). Ponieważ 1 jest liczbą Fibonacciego, wszystkie liczby Fibonacciego są również potajemnie Fibonacciego.
Wyzwanie
Wyzwaniem jest napisanie programu lub funkcji, która przyjmuje liczbę całkowitą i zwraca, czy ta liczba całkowita jest potajemnie Fibonacciego.
Wkład
Możesz przyjmować dane wejściowe w dowolnym rozsądnym formacie. Możesz założyć, że wejście będzie pojedynczą dodatnią liczbą całkowitą.
Wydajność
Wyprowadź jeden z dwóch różnych wyników dla tego, czy dane wejściowe są potajemnie Fibonacciego. Przykłady obejmują True
/ False
, 1
/ 0
itd.
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach! Standardowe luki są zabronione.
Przypadki testowe
Truthy (secretly Fibonacci)
1
2
4
50
140
300099
Falsey (NOT secretly Fibonacci)
33
53
54
139
118808