题目:
斐波那契数字定义为:
F1 = 1
F2 = 1
Fn = F(n-1) + F(n-2) , 其中 n > 2 。
斐波那契数字为:1,1,2,3,5,8,13,……
求:和为 20220625 的斐波那契数字的最少数目是多少?
(其中,每个斐波那契数字都可以被使用多次。)
分析:
k的组成数字一定有离它最近的斐波那契数字
答案:
#include <stdio.h>
int fib(int k)
{
//定义a为当前值,b为上一个斐波那契数字,c为辅助变量
int a=1,b=1,t;
while(a<k)
{
t=a+b;
b=a;
a=t;
}
return b;
}
int main()
{
int k,count=0;
scanf("%d",&k);
if(k==0)printf("%d",0);//如果k为0,返回0
while(k!=0)
{
k-=fib(k);
count++;
}
printf("%d",count);
return 0;
}