Fibonacci


Fibonacci 同项公式:

HDU 1567  Fibonacci - 晨 - 漫 步 、、

求对数后:
HDU 1567  Fibonacci - 晨 - 漫 步 、、

由于   HDU 1567  Fibonacci - 晨 - 漫 步 、、 很小,所以可以忽略。

log10 (Fibonacci [n] ) = -0.5 * log10(5.0) + ((double)n) * log10((sqrt(5.0) + 1.0) / 2.0);
Fibonacci [n] ≈ pow (10.0,log10(Fibonacci [n] ))  * 10^k。   这里,需要取多少位,用 K 控制。
 
#include <iostream>
#include <cmath>
int main()
{
    int n,i;
    const int N=21;
    int f[N]={0,1};
    for(i=2;i<N;i++)
        f[i]=f[i-1]+f[i-2];
    while(~scanf("%d",&n))
    {
        if(n<N) printf("%d\n",f[n]);
        else{
            double t=-0.5*log10(5.0)+n*log10((1+sqrt(5.0))/2);
            t=t-(int)t;
            double ans=pow(10.0,t);
            printf("%d\n",(int)(ans*1000));
        }
    }
    return 0;
}

 

posted @ 2013-09-19 15:42  Destino74  阅读(97)  评论(0编辑  收藏  举报