题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1715
源代码:
#include <iostream>
#include <string>
using namespace std;
string Add(string fNum,string sNum)
{
int i;
if(fNum.length() < sNum.length() ) fNum.swap(sNum);
string A = "0";
A += fNum;
for (i=1;i<=fNum.length();i++){
if(i<=sNum.length())
A[A.length()-i]+=sNum[sNum.length()-i]-'0';
}
for(i=1;i<A.length();i++){
if(A[A.length()-i]>'9'){
A[A.length()-i]-=10;A[A.length()-i-1]+=1;
}
}
while(A[0]=='0') A.erase(0,1);
return A;
}
string F[1001] = { "0", "1", "1" };
void setNum (){
for ( int i = 3; i != 1001; ++ i )
{
F[i] = Add ( F[i-1] , F[i-2] ) ;
}
}
int main ()
{
int T;
setNum ();
cin>>T;
while ( T -- ){
int N;
cin >> N;
cout << F[N] << endl;
}
return 0;
}