您的位置:首页 > 其它

hdu-1568 Fibonacci

2014-05-27 20:50 295 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1568

主要思想是用通项公式来算f
的前四位,具体跟上一个题一样。

#include<stdio.h>
#include<math.h>
#define aa (sqrt(5.0)+1.0)/2
int main()
{
int n,f[21]={0,1,1,2,3,5},i,j;
double ans;
for(i=6;i<=20;i++)
f[i] = f[i-1]+f[i-2];
while(scanf("%d",&n)!=EOF)
{
double ans=0.0;
if(n<=20)//n超出20f
就超出四位数了
printf("%d\n",f
);
else
{
ans=-0.5*(log10(5.0))+n*log10(aa);
ans-=(int)ans;
ans=pow(10.0,ans);
while(ans<1000)
ans*=10;
printf("%d\n",(int)ans);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: