求斐波那契前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(" "); } return 0; }