fibonacci數列:f[0]=0,f[1]=1,f[i]=f[i-1]+f[i-2];
如果是求前19位那麽就用上面遞推過來就可以了(f[20]=6765,f[21]=10946就已經超四位了)
要求f[n]前面四位就要用到f(n)的數學公式:?f(n)=[((1+sqrt(5))/2)^n-((1-sqrt(5)/2)^n]/sqrt(5)
#include<stdio.h>
#include<math.h>
int?main()
{
int?n; double?e=(1+sqrt(5))/2,tmp; while(scanf("%d",&n)+1) { tmp=n*log10(e)-0.5*log10(5); tmp=tmp-(int)tmp; tmp=pow(10.0,tmp); while(tmp<1000)?tmp*=10; printf("%d\n",(int)tmp); }}
/*下面的樣例:(n>=20)
輸入:
20
21
22
23
24
25
35
36
37
38
39
40
89897865
99999999
999999999
輸出:
6765
1094
1771
2865
4636
7502
9227
1493
2415
3908
6324
1023
2091
2927
4914
*/