sfondo
Molti di voi sanno cos'è un numero di Fibonacci . Alcuni di voi potrebbero sapere che tutti gli interi positivi possono essere rappresentati come una somma di uno o più numeri Fibonacci distinti, secondo il Teorema di Zeckendorf . Se il numero di termini nella rappresentazione ottimale di Zeckendorf di un numero intero n
è esso stesso un numero di Fibonacci, chiameremo n
"segretamente" Fibonacci.
Per esempio:
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
Gli appunti
- La rappresentazione Zeckendorf ottimale può essere trovata usando un algoritmo goloso. Prendi semplicemente il più grande numero di Fibonacci <= n e sottralo da n fino a raggiungere 0
- Tutti i numeri di Fibonacci possono essere rappresentati come una somma di 1 numero di Fibonacci (stesso). Poiché 1 è un numero di Fibonacci, anche tutti i numeri di Fibonacci sono segretamente Fibonacci.
Sfida
La tua sfida è scrivere un programma o una funzione che accetta un numero intero e restituisce se quel numero intero è segretamente Fibonacci.
Ingresso
È possibile accettare input in qualsiasi formato ragionevole. Si può presumere che l'input sarà un singolo numero intero positivo.
Produzione
Stampa uno dei due risultati distinti per sapere se l'input è segretamente Fibonacci. Gli esempi includono True
/ False
, 1
/ 0
, ecc.
punteggio
Questo è code-golf , quindi vince la risposta più breve in byte! Sono vietate le scappatoie standard.
Casi test
Truthy (secretly Fibonacci)
1
2
4
50
140
300099
Falsey (NOT secretly Fibonacci)
33
53
54
139
118808