Hintergrund
Die meisten von Ihnen wissen, was eine Fibonacci-Zahl ist. Einige von Ihnen wissen vielleicht, dass alle positiven ganzen Zahlen nach dem Satz von Zeckendorf als Summe von einer oder mehreren unterschiedlichen Fibonacci-Zahlen dargestellt werden können . Wenn die Anzahl der Terme in der optimalen Zeckendorf-Darstellung einer ganzen Zahl n
selbst eine Fibonacci-Zahl ist, werden wir n
"heimlich" Fibonacci nennen.
Beispielsweise:
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
Anmerkungen
- Die optimale Zeckendorf-Darstellung kann mit einem Greedy-Algorithmus ermittelt werden. Nehmen Sie einfach die größte Fibonacci-Zahl <= n und subtrahieren Sie sie von n, bis Sie 0 erreichen
- Alle Fibonacci-Zahlen können als Summe von 1 Fibonacci-Zahl (selbst) dargestellt werden. Da 1 eine Fibonacci-Zahl ist, sind alle Fibonacci-Zahlen auch insgeheim Fibonacci.
Herausforderung
Ihre Herausforderung besteht darin, ein Programm oder eine Funktion zu schreiben, die eine Ganzzahl akzeptiert und zurückgibt, ob diese Ganzzahl heimlich Fibonacci ist.
Eingang
Sie können Eingaben in jedem vernünftigen Format vornehmen. Sie können davon ausgehen, dass die Eingabe eine einzelne positive Ganzzahl ist.
Ausgabe
Geben Sie eines von zwei unterschiedlichen Ergebnissen aus, um festzustellen, ob es sich bei der Eingabe um Fibonacci handelt. Beispiele sind True
/ False
, 1
/ 0
usw.
Wertung
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes! Standardlücken sind verboten.
Testfälle
Truthy (secretly Fibonacci)
1
2
4
50
140
300099
Falsey (NOT secretly Fibonacci)
33
53
54
139
118808