• HDU 1715 大菲波数


    大菲波数

    Time Limit: 1000/1000 MS (Java/Others)    

    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 20423    

    Accepted Submission(s): 6891

    Problem Description

    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

     

    Simple Output

    1 1 2 3 5

     题解:一开始,用的int还真是interesting!!!wa了wa了,emmmm数据少的时候可以用这个吧,

           给你们看一下我的错误的思路,受走楼梯那个动态规划想到的。emmmm也算是个模板。

    没有AC的代码:

    #include<iostream>
    #include<cstdio>
    #include<string>
    using namespace std;
    int fib(int num)
    {
         if(num==1||num==2)
             return 1;
         int a=1;
         int b=1;
         int temp=0;
         for(int i=3;i<=num;i++)
         {
             temp=a+b;
             a=b;
             b=temp;
         }
         return temp;
    }
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int pi;
            scanf("%d",&pi);
            printf("%d
    ",fib(pi));
        }
        return 0;
    }

    后来,emmmm因为是大数,所以肯定要开个数组,emmmm还得节约时间,

    不能输一个数就从头算一个数,二维数组吧,加内存,减时间。

    AC代码:

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int fib[1003][1003];
    int main()
    {
        memset(fib,0,sizeof(fib));
        fib[1][1]=1;
        fib[2][1]=1;
        for(int i=3;i<=1000;i++)
        {
            for(int j=1;j<=1000;j++)//这里加法运算真是剪不断,理还乱,这里最重要了,错了就全完蛋。
            {
                fib[i][j+1]=(fib[i][j]+fib[i-1][j]+fib[i-2][j])/10;
                fib[i][j]=(fib[i][j]+fib[i-1][j]+fib[i-2][j])%10;
            }
        }
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int pi;
            scanf("%d",&pi);
            int node=0;
            int i=1000;
            while(!fib[pi][i])
            {
                 node=i;
                 i--;
            }
            for(int i=node-1;i>=1;i--)
                printf("%d",fib[pi][i]);
            printf("
    ");
        }
        return 0;
    }

    今天也是元气满满的一天!good luck!

    我想要变得高一点,最好能伸手给你一片天。
  • 相关阅读:
    mongodb的索引
    mongodb的简单操作
    mongodb的安装
    redis简单消息队列
    支持utf8的str_split函数
    php curl 传递数据
    linux 安装 ftp
    php des 对称加解密类
    13. Roman to Integer
    12. Integer to Roman
  • 原文地址:https://www.cnblogs.com/cattree/p/7498752.html
Copyright © 2020-2023  润新知