南阳OJ 461 Fibonacci数列(四)

来源:互联网 发布:杭州师范大学知乎 编辑:程序博客网 时间:2024/05/20 14:28

描述

数学神童小明终于把0到100000000的Fibonacci数列(f[0]=0,f[1]=1;f[i] = f[i-1]+f=2”>i-2)的值全部给背了下来。
接下来,CodeStar决定要考考他,于是每问他一个数字,他就要把答案说出来,不过有的数字太长了。所以规定超过4位的只要说出前4位(高4位)就可以了,可是CodeStar自己又记不住。于是他决定编写一个程序来测验小明说的是否正确。

输入

输入若干数字n(0 <= n <= 100000000),每个数字一行。读到文件尾结束。

输出

输出f[n]的前4个数字(若不足4个数字,就全部输出)。

样例输入
0
1
2
3
4
5
35
36
37
38
39
40
样例输出
0
1
1
2
3
5
9227
1493
2415
3908
6324
1023
f(n)=n*log10((1+sqrt(5))/2)-log10(sqrt(5));
附上代码:

#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#include<math.h>using namespace std;int n,a[30]= {0},ans1;double ans,ans2;int main(){    while(~scanf("%d",&n))    {        a[0]=0;        a[1]=1;        a[2]=1;        for(int i=3; i<=20; i++)            a[i]=a[i-1]+a[i-2];        if(n<=20)            printf("%d\n",a[n]);        else        {            ans=n*log10(0.5+0.5*sqrt(5))-log10(sqrt(5));            ans1=ans;            ans2=ans-ans1;            ans2=pow(10.0,ans2);            ans1=ans2*1000;            printf("%d\n",ans1);        }    }    return 0;}
0 0
原创粉丝点击