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
Sample Output
1
1
2
3
5
开一个二维数组,一部分存高位(进位)
#include<bits/stdc++.h>
using namespace std;
typedef long long lint;
int a[1005][1005];
int main()
{
int t,n;
cin>>t;
while(t--)
{
cin>>n;
a[1][0]=1,a[2][0]=1;
int k=0;
int t=0;
for(int i=3;i<=n;i++)
{
t=0;
for(int j=0;j<=k;j++)
{
a[i][j]=a[i-1][j]+a[i-2][j]+t;
t=a[i][j]/10;
a[i][j]%=10;
}
if(t)
{
k++;
a[i][k]=t;
}
}
for(int i=k;i>=0;i--)
cout<<a[n][i];
cout<<endl;
}
return 0;
}