题目链接: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; }
本文提供了一种使用C++实现的大整数斐波那契数列求和方法。通过字符串处理技术,该算法能够有效处理超过常规整数类型所能表示的极大数值,适用于ACM竞赛等场景中对精度要求极高的问题。
625

被折叠的 条评论
为什么被折叠?



