直接上代码:
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
using namespace std;
int main()
{
string a,b;
vector<int> c; //存放结果
cin >> a >> b;
if(a.length() < b.length()){ //把位数较大的数给a
string t = a;
a = b;
b = t;
}
int alen = a.length(), blen = b.length(); //为了减少length()的调用频率
int tmp;
for(int i=1; i<=blen; i++){
tmp = a.at(alen-i)-'0'+b.at(blen-i)-'0';//结果转为int型
c.push_back(tmp); //将每一位的和存到向量c中,此处可以看作是压栈操作
}
for(int j=alen-blen-1; j>=0; j--)
c.push_back(a.at(j)-'0'); //将a剩余的高位存入c中
for(int i=0; i<c.size(); i++){ //对向量中满10的数做处理
if(c.at(i) >= 10){
if(i==c.size()-1){ //对向量最后一位满10处理
c.at(i) = c.at(i)-10;
c.push_back(1);
}else{
c.at(i) = c.at(i)-10;
c.at(i+1) = c.at(i+1)+1;
}
}
}
while(!c.empty()){ //输出,相当于出栈操作
printf("%d",c.back());
c.pop_back();
}
return 0;
}