已知FIBONACCI数列的定义为:F1 = 1, F2 = 1, n > 2时, Fn = Fn - 1 + Fn - 2,请编程验证:任意的正整数可表示为若干个不同的FIBONACCI数之和。例如,45可以表示为45 = 34 + 8 + 3(即F9 + F5 + F3)
输入:重复地从键盘上读入一个正整数N(<=10000)
输出:将其表示为不同的FIBONACCI数之和。
重复上述工作,直到读入的数为0
提示:F21 = 10946
#include <cstdio>
int FBNQ[22] = {0};
void get_FBNQ()
{
FBNQ[1] = 1;
FBNQ[2] = 1;
for(int i = 3; i < 22; i++)
{
FBNQ[i] = FBNQ[i - 1] + FBNQ[i - 2];
}
}
bool is_FBNQ(int n)
{
for(int i = 1; i < 22; i++)
{
if(n == FBNQ[i])
{
return true;
}
}
return false;
}
int main(void)
{
get_FBNQ();
int n;
while(scanf("%d", &n), n != 0)
{
if(is_FBNQ(n))//特判
{
printf("%d\n", n);
}
while(!is