描述
一个斐波那契序列,F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) (n>=2),根据n的值,计算斐波那契数F(n),其中1≤n≤1000。
输入
输入数据的第一行为测试用例的个数t,接下来为t行,每行为一个整数n(0≤n≤1000)。
输出
输出每个测试用例的斐波那契数F(n)。
样例输入
2
1
2
1
2
样例输出
1
1
1
#include<iostream>
#include<string>
using namespace std;
string StringAdd(string a,string b){
int maxlen=a.length()>b.length()?a.length()+1:b.length()+1,carry=0,i,result;
string sum="";
while(a.length()<maxlen)
a="0"+a;
while(b.length()<maxlen)
b="0"+b;
while(sum.length()<maxlen)
sum="0"+sum;
for(i=maxlen-1;i>0;i--){
result=a[i]+b[i]-2*'0'+carry;
sum[i]=result%10+'0';
carry=result/10;
}
sum[0]=carry+'0';
while(sum[0]=='0' && sum.length()>1)
sum.erase(0,1);
return sum;
}
int main(){
string Fibonacci[1001]={"0","1","1"};
int i,n;
for(i=3;i<=1000;i++)
Fibonacci[i]=StringAdd(Fibonacci[i-1],Fibonacci[i-2]);
scanf("%d",&n);
while(n--){
scanf("%d",&i);
cout<<Fibonacci[i]<<endl;
}
return 0;
}