大数相加
请问下像112233445566778899这么大的数怎么相加啊?[ 本帖最后由 a99875984 于 2012-7-20 17:27 编辑 ]
#include <iostream> #include <string> #include <stack> using namespace std; string Add(string Str1, string Str2) { // 操作数1 stack<int>S1; // 操作数2 stack<int>S2; // 结果 stack<int>S3; int i, r, last = 0; for(i=0; i<Str1.size(); i++)//str1.size()什么意思啊> S1.push(Str1[i] - '0');//这个语句push是干嘛用的?括号了的那个是什么意思》 for(i=0; i<Str2.size(); i++) S2.push(Str2[i] - '0'); while(!S1.empty() && !S2.empty())//这个呢?判断条件是什么啊? { r = S1.top() + S2.top() +last;//这个TOP是什么 S3.push(r%10); last = r/10; S1.pop(); S2.pop();//这个POP呢? } if(!S1.empty()) { while(!S1.empty()) { r = S1.top() + last; S3.push(r%10); last = r/10; S1.pop(); } } else if(!S2.empty()) { while(!S2.empty()) { r = S2.top() + last; S3.push(r%10); last = r/10; S2.pop(); } } if(last != 0) S3.push(last); string result; while(!S3.empty()) { result += S3.top() + '0'; S3.pop(); } return result; } int main(int argc, char* argv[]) { int i, N; cin>>N; string a, b; string* answer = new string[N]; for(i=0; i<N; i++) { cin>>a>>b; answer[i] = Add(a, b); } for(i=0; i<N; i++) { cout<<answer[i]<<endl; } delete[] answer; return 0; }