Всі ми знайомі з відомою послідовністю Фібоначчі , яка починається з 0
і 1
, і кожен елемент є сумою попередніх двох. Ось кілька перших термінів (OEIS A000045 ):
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584
Дано a додатне ціле число , поверніть найближче число послідовності Фібоначчі за цими правилами:
Ближче число Фібоначчі визначається як число Фібоначчі з найменшим абсолютної різниці з заданим числом. Наприклад,
34
це найближче число до Фібоначчі30
, тому що|34 - 30| = 4
, яке менше, ніж друге найближче21
, для якого|21 - 30| = 9
.Якщо дане ціле число належить послідовності Фібоначчі, найближче число Фібоначчі є саме собою. Наприклад, найближчий число Фібоначчі , щоб
13
точно13
.У разі прив'язки ви можете вивести або одне з чисел Фібоначчі, які є найближчими до входу, або просто вивести їх обидва. Наприклад, якщо на вході
17
, все наступні співвідношення:21
,13
або21, 13
. Якщо ви повернете їх обоє, будь ласка, зазначте формат.
Застосовуються лазівки за замовчуванням . Ви можете взяти вхід та надати вихід за допомогою будь-якого стандартного методу . Ваша програма / функція повинна обробляти значення лише до 10 8 .
Випробування
Вхід -> Вихід 1 -> 1 3 -> 3 4 -> 3 або 5 або 3, 5 6 -> 5 7 -> 8 11 -> 13 17 -> 13 або 21 або 13, 21 63 -> 55 101 -> 89 377 -> 377 467 -> 377 500 -> 610 1399 -> 1597
Оцінка балів
Це код-гольф , тому найкоротший код у байтах кожною мовою виграє!
n
має на увазі n ≥ 1
.