Conosciamo tutti la famosa sequenza di Fibonacci , che inizia con 0
e 1
, e ogni elemento è la somma delle due precedenti. Ecco i primi termini (OEIS A000045 ):
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584
Dato un numero intero positivo , restituisci il numero più vicino della sequenza di Fibonacci, secondo queste regole:
Il numero di Fibonacci più vicino è definito come il numero di Fibonacci con la più piccola differenza assoluta con l'intero dato. Ad esempio,
34
è il numero di Fibonacci più vicino a30
, perché|34 - 30| = 4
, che è più piccolo del secondo più vicino21
, per il quale|21 - 30| = 9
.Se il dato numero intero appartiene alla sequenza di Fibonacci, il numero di Fibonacci più vicino è esattamente se stesso. Ad esempio, il numero di Fibonacci più vicino a
13
è esattamente13
.In caso di pareggio, puoi scegliere di emettere uno dei numeri di Fibonacci che sono entrambi più vicini all'ingresso o semplicemente di emetterli entrambi. Ad esempio, se l'ingresso è
17
, tutti i seguenti valgono:21
,13
o21, 13
. Nel caso in cui vengano restituiti entrambi, indicare il formato.
Si applicano scappatoie predefinite . Puoi prendere input e fornire output attraverso qualsiasi metodo standard . Il tuo programma / funzione deve gestire solo valori fino a 10 8 .
Casi test
Ingresso -> Uscita 1 -> 1 3 -> 3 4 -> 3 o 5 o 3, 5 6 -> 5 7 -> 8 11 -> 13 17 -> 13 o 21 o 13, 21 63 -> 55 101 -> 89 377 -> 377 467 -> 377 500 -> 610 1399 -> 1597
punteggio
Questo è code-golf , quindi vince il codice più breve in byte in ogni lingua !
n
implica n ≥ 1
.