您的位置:首页 > 其它

HDU 1568 Fibonacci 数学= = 开篇

2013-09-06 00:16 381 查看
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1568

分析:一道数学题

找出斐波那契数列的通项公式,再利用对数的性质就可得到前几位的数

斐波那契通项公式如下:

#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const double f=(sqrt(5.0)+1)/2.0;
int fi[20];
int main()
{
int n,i;
double bit;
fi[0]=0;fi[1]=fi[2]=1;
for(i=3;i<=20;i++)
{
fi[i]=fi[i-1]+fi[i-2];
}
while(scanf("%d",&n)!=EOF)
{
if(n<=20)
printf("%d\n",fi
);
else{
bit=-0.5*log10(5.0)+((double)n)*log(f)/log(10.0);
bit=bit-(int)bit;
bit=pow(10.0,bit);
while(bit<1000)bit*=10;
printf("%d\n",(int)bit);
}
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: