1. 程式人生 > >南陽OJ 461 Fibonacci數列(四)

南陽OJ 461 Fibonacci數列(四)

描述

數學神童小明終於把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; }