背景
你们大多数人都知道斐波那契数是什么。根据Zeckendorf定理,有些人可能知道所有正整数都可以表示为一个或多个不同的斐波那契数之和。如果整数的最佳Zeckendorf表示形式中的项数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
笔记
- 可以使用贪心算法找到最佳的Zeckendorf表示形式。只需取最大的斐波那契数<= 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