题目链接: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; }