• hdu 1568 Fibonacci 快速幂


    Fibonacci

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)


    Problem Description
    2007年到来了。经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列
    (f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i>=2))的值全部给背了下来。
    接下来,CodeStar决定要考考他,于是每问他一个数字,他就要把答案说出来,不过有的数字太长了。所以规定超过4位的只要说出前4位就可以了,可是CodeStar自己又记不住。于是他决定编写一个程序来测验zouyu说的是否正确。
     
    Input
    输入若干数字n(0 <= n <= 100000000),每个数字一行。读到文件尾。
     
    Output
    输出f[n]的前4个数字(若不足4个数字,就全部输出)。
     
    Sample Input
    0 1 2 3 4 5 35 36 37 38 39 40
     
    Sample Output
    0 1 1 2 3 5 9227 1493 2415 3908 6324 1023
     
    Author
    daringQQ
     
    Source
     思路:利用斐波那契数列公式;double的快速幂搞搞就好了;
    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define pi (4*atan(1.0))
    #define eps 1e-14
    const int N=2e5+10,M=4e6+10,inf=1e9+10,MOD=1000;
    const ll INF=1e18+10;
    int a[25];
    double change(double a)
    {
        while(a-10.0>=eps)
        {
            a/=10;
        }
        return a;
    }
    double pow(double a,int b)
    {
        double ans=1.0;
        while(b)
        {
            if(b&1)ans*=a,ans=change(ans);
            a*=a;
            a=change(a);
            b>>=1;
        }
        return ans;
    }
    int main()
    {
        int n;
        a[0]=0,a[1]=1;
        for(int i=2;i<=20;i++)
            a[i]=a[i-1]+a[i-2];
        double base1=(1.0+sqrt(5.0))/2.0,base2=(1.0-sqrt(5.0))/2;
        while(~scanf("%d",&n))
        {
            if(n<=20)
                printf("%d
    ",a[n]);
            else
            {
                double ans=(1.0)/sqrt(5.0)*pow(base1,n);
                if(ans-1.0>=eps)
                ans*=1000;
                else
                    ans*=10000;
                printf("%d
    ",(int)ans);
            }
        }
        return 0;
    }
  • 相关阅读:
    列表与数组 Perl入门第三章
    北京地区-医类汇总
    via/route blockage/size blockage/wire/pin guide/pin blockage/partition
    dbGet(三)
    dbGet(二.一)hinst
    微服务是什么?
    Docker入门 四 Swarms集群
    Docker入门 三 用服务来扩展和负载均衡你的应用
    Linux2.2路径、删除目录及文件
    Linux2.1系统目录结构、ls、文件类型、alias
  • 原文地址:https://www.cnblogs.com/jhz033/p/6011009.html
Copyright © 2020-2023  润新知