求斐波那契数 的 前4位。。
前20个数 是 4位 以内的。。打表输出。。
之后的斐波那契数列:
当n比较大时。可近似写为:1/sqrt(5)*((1+sqrt(5))/2)^n;
((1-sqrt(5))/2)^n 近似为0;
然后用取对数的方法 求 前四位。。
取对数相关题解:http://blog.csdn.net/u010489389/article/details/16879365
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#define pi acos(-1.0)
#define e exp(1.0)
#define ll long long
ll a[22];
int main()
{
int i,j,k;
a[0]=0,a[1]=1;
for(i=2;i<=20;i++)
a[i]=a[i-1]+a[i-2];
int n;
while(~scanf("%d",&n))
{
if(n<=20)
printf("%d\n",a[n]);
else
{
double temp=-0.5*log10(5.0)+n*log10((1+sqrt(5.0))/2);
temp-=(int)temp;
temp=pow(10.0,temp);
int ans=(int)(temp*1000);
printf("%d\n",ans);
}
}
}