zoukankan      html  css  js  c++  java
  • hdu-1715 大斐波数

    Fibonacci数列,定义如下:
    f(1)=f(2)=1
    f(n)=f(n-1)+f(n-2) n>=3。
    计算第n项Fibonacci数值。

    Input输入第一行为一个整数N,接下来N行为整数Pi(1<=Pi<=1000)。
    Output输出为N行,每行为对应的f(Pi)。
    Sample Input
    5
    1
    2
    3
    4
    5
    Sample Output
    1
    1
    2
    3
    5
    解题思路:此题的数值较大,即使无符号long long也难以存下,所以考虑用数组模拟大整数加法计算,代码如下;
    #include <iostream>
    #include <math.h>
    #include <stdio.h>
    
    using namespace std;
    int  a[5000],b[5000],c[5000];
    long long d[5000];
    void f(int n)
    {
        int m=1;
        a[1]=1;
        b[1]=1;
        for(int j=1; j<=n; j++)
        {
            for(int i=1; i<=m; i++)
            {
                c[i]=a[i]+b[i];
            }
            int te=0,ce;
            for(int i=1; i<=m; i++)
            {
                ce=te+c[i];
                c[i]=ce%10;
                te=ce/10;
            }
            while(te)
            {
                m++;
                c[m]=te%10;
                te/=10;
            }
            for(int k=1;k<=m;k++)
            {
                a[k]=b[k];
                b[k]=c[k];
            }
        }
        for(int i=m;i>=1;i--)
         printf("%d",c[i]);
         printf("
    ");
    }
    void inin()
    {
        int i;
        d[1]=1;
        d[2]=1;
        for(i=3;i<=1000;i++)
            d[i]=d[i-1]+d[i-2];
    }
    int main()
    {
        int n;
        inin();
        scanf("%d",&n);
        while(n--)
        {
            fill(a+1,a+5000,0);
            fill(b+1,b+5000,0);
            fill(c+1,c+5000,0);
            int x;
            scanf("%d",&x);
            if(x>90)///做一个时间上的优化^-^
                f(x-2);///为啥是x-2? 看一下f函数.....
            else
                printf("%lld
    ",d[x]);
        }
        return 0;
    }
  • 相关阅读:
    UVA 10935 约瑟夫环
    分拆素数和 埃氏筛法
    POJ 2349 Prim
    POJ 2031 prim
    POJ 1861 Kruskal
    POJ 2395 Prim
    POJ 1751 Prim
    POJ 2421 Prim
    vuejs开发环境搭建及热更新
    vuejs介绍
  • 原文地址:https://www.cnblogs.com/mashen/p/8530407.html
Copyright © 2011-2022 走看看