Fibonacci数列,定义如下:
f(1)=f(2)=1
f(n)=f(n-1)+f(n-2) n>=3。
计算第n项Fibonacci数值。
输入
输入第一行为一个整数N,接下来N行为整数Pi(1<=Pi<=1000)。
输出
输出为N行,每行为对应的f(Pi)。
样例输入
5
1
2
3
4
5
样例输出
1
1
2
3
5
提示
此题需要用大数处理
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
#define maxn 1005
int fib [maxn][maxn] = {0};
void Add(int a[], int b[], int c[])
{
for(int i = 0; i < maxn; i++)
{
a[i] += b[i] + c[i];
a[i+1] += a[i]/10;
a[i] %= 10;
}
}
void PutNum(int a[])
{
int len;
for(int i = maxn-1; i >= 0; i--)
{
if(a[i])
{
len = i;
break;
}
}
for(int i = len; i >= 0; i--)
cout << a[i];
cout << endl;
}
int main()
{
fib[1][0] = fib[2][0] = 1;
for(int i = 3; i <= 1000; i++)
{
Add(fib[i], fib[i-1], fib[i-2]);
}
int T, n;
cin >> T;
while(T--)
{
cin >> n;
PutNum(fib[n]);
}
return 0;
}