大数运算+数组解决

    求斐波那契前1000位的数哈!!!

 

   

走楼梯

 

 

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

 

题目描述

 

小虎发现走楼梯的时候一次上一个台阶比较惬意,一次上两个台阶比较高效,一次上三个台阶就很累人。
小虎是一个即注重质量又注重高效的人,于是他就在上楼梯的时候每步就只跨上一个台阶或两个台阶,
现在小虎想知道他这样上n阶的楼梯一共有多少种走法,但是他又不想亲身经历,只好求助于会编程的你,帮他解决这个问题了。
 

 

输入

 

第一行是T,表示接下来有T组输入,每组输入一个N(2 <= N <= 1000)

 

输出

 

对应每组输入输出一共有多少种走法。

 

示例输入

 

3

10

9

22

 

示例输出

 

89

55

28657

 

提示

 

 

 

    因为数据越加越大,后几百位的数据早就超越 long long 和 double 了, 故我们选择 数组加法。

  

   代码如下哈哈哈!!!

   As  followed :

   

#include <stdio.h>

#include <string.h>



int a[1001][501]={0};



int main()

{

    int t;

    int n;

    int i, j, k, h, e;



    a[1][500] = 1;

    a[2][500] = 2;

    a[3][500] = 3;

    a[4][500] = 5;

    a[5][500] = 8;



   for(i=6; i<=1000; i++)

  {

     h = 0;

     for(j=500; j>=0; j--)

    {

       e = ( a[i-2][j] + a[i-1][j] + h );



       a[i][j] = e % 10 ;



       h = ( a[i-2][j] + a[i-1][j] + h )/10;

     }

  }

    scanf("%d", &t);





 while(t--)

 {

      scanf("%d", &n);

      i = 0;

      while(a[n][i]==0)

     {

        i++;

     }

     for(i; i<=500; i++)

     {

          printf("%d", a[n][i] );

     }

      printf("\n");

  }

   return 0;

}

 

 

你可能感兴趣的:(数组)