Wszyscy znamy słynną sekwencję Fibonacciego , która zaczyna się od 0
i 1
, a każdy element jest sumą dwóch poprzednich. Oto kilka pierwszych warunków (OEIS A000045 ):
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584
Biorąc pod uwagę dodatnią liczbę całkowitą , zwróć najbliższą liczbę sekwencji Fibonacciego, zgodnie z następującymi regułami:
Najbliższa liczba Fibonacciego jest definiowana jako liczba Fibonacciego o najmniejszej różnicy bezwzględnej z danej liczby całkowitej. Na przykład,
34
jest najbliższą liczbą Fibonacciego30
, ponieważ|34 - 30| = 4
, która jest mniejsza niż druga najbliższa21
, dla której|21 - 30| = 9
.Jeśli podana liczba całkowita należy do sekwencji Fibonacciego, najbliższa liczba Fibonacciego jest dokładnie sama. Na przykład najbliższa liczba Fibonacciego
13
to dokładnie13
.W przypadku remisu możesz wybrać wyjście jednej z liczb Fibonacciego, które są najbliżej wejścia, lub po prostu wyprowadzić je obie. Na przykład, jeśli wejście jest
17
, wszystkie z poniższych są ważne:21
,13
lub21, 13
. Jeśli zwrócisz je oba, podaj format.
Obowiązują domyślne luki . Możesz pobierać dane wejściowe i dostarczać dane wyjściowe dowolną standardową metodą . Twój program / funkcja może obsługiwać tylko wartości do 10 8 .
Przypadki testowe
Wejście -> Wyjście 1 -> 1 3 -> 3 4 -> 3 lub 5 lub 3, 5 6 -> 5 7 -> 8 11 -> 13 17 -> 13 lub 21 lub 13, 21 63 -> 55 101 -> 89 377 -> 377 467 -> 377 500 -> 610 1399 -> 1597
Punktacja
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach w każdym języku !
n
implikuje n ≥ 1
.