您的位置:首页 > 其它

hdu 1568

2012-02-13 10:53 169 查看
经典的数学题啊~~~

题解:http://blog.csdn.net/cscj2010/article/details/6768395

感触:数学还是得灵活应用啊,关键是这个公式啊……起初是打算用大数做的,觉得好麻烦,就搜了一下,看一下别人的思路,我晕,竟然可以这样思考,NB啊~~~

还有就是因为后面约了一个式子,但是这个n得足够大,所以要先存储前面的几个数……

#include "stdio.h"
#include "math.h"

int fib[50]={0,1};

int main()
{
int n,i;
double a;
double ig,fp;

for(i=2;i<=20;i++)
fib[i]=fib[i-1]+fib[i-2];

while(scanf("%d",&n)==1)
{
if(n<=20)
{
printf("%d\n",fib
);
continue;
}

a=((double)n)*log10((1+sqrt(5.0))/2)-0.5*log10(5.0);
fp=pow(10.0,modf(a,&ig));
while(fp<1000)
{
fp*=10;
}

printf("%d\n",(int)fp);//这里应该转换成整形数后再输出,因为用%.lf输出会出现进位现象……
}

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