Всі ми знайомі з відомою послідовністю Фібоначчі , яка починається з 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.