Problem Description
Fibonacci数列,定义如下:
f(1)=f(2)=1
f(n)=f(n-1)+f(n-2) n>=3。
计算第n项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 35
#include<cstdio> #include<cstring> int s[1010][2020]; int main(){ int a, b, c; memset(s, 0, sizeof(s)); s[1][0] = 1; s[2][0] = 1; for(int i = 3; i < 1002; i++){ for(int j = 0; j < 2010; j++){ s[i][j] += s[i-1][j] + s[i-2][j];//依据大数相加原理,更简单一些 if(s[i][j] > 9){ s[i][j+1] = s[i][j] / 10; s[i][j] %= 10; } } } scanf("%d", &a); while(a--){ scanf("%d", &b); for(int i = 1002, k = 0; i >= 0; i--){ if(k == 0 && s[b][i] != 0){ k = 1; } if(k){ printf("%d", s[b][i]); } } printf("\n"); } return 0; }