Задний план
Большинство из вас знает, что такое число Фибоначчи . Некоторые из вас могут знать, что все положительные целые числа могут быть представлены в виде суммы одного или нескольких различных чисел Фибоначчи, согласно теореме Цекендорфа . Если число членов в оптимальном представлении Цекендорфа целого числа n
само является числом Фибоначчи, мы будем называть n
«тайно» Фибоначчи.
Например:
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
Заметки
- Оптимальное представление Цекендорфа можно найти с помощью жадного алгоритма. Просто возьмите наибольшее число Фибоначчи <= n и вычтите его из n, пока не достигнете 0
- Все числа Фибоначчи могут быть представлены как сумма 1 числа Фибоначчи (самого себя). Поскольку 1 - это число Фибоначчи, все числа Фибоначчи также являются тайными числами Фибоначчи.
Вызов
Ваша задача - написать программу или функцию, которая принимает целое число и возвращает тайное число Фибоначчи.
вход
Вы можете принять участие в любом разумном формате. Вы можете предположить, что ввод будет одним положительным целым числом.
Выход
Выведите один из двух разных результатов для того, является ли ввод тайно Фибоначчи. Примеры включают в себя True
/ False
, 1
/ 0
и т. Д.
счет
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах! Стандартные лазейки запрещены.
Тестовые случаи
Truthy (secretly Fibonacci)
1
2
4
50
140
300099
Falsey (NOT secretly Fibonacci)
33
53
54
139
118808