设两个string 分别为p,q,然后取较短的那个作为基准,同时设置进位器of=0,每次从p和q的末端pop出两个数字相加并加上进位器of,如果有进位就将相加的结果-10,进位器of=1,否则of=0,并将相加的最终结果Push进入vector,完成上述操作后,再取有剩余长度的那个串,加上进位器的数值,再按照上述判断方法,将剩余的位Push进入vector即可。若最终Of还是等于1,就在最高位再加一个1.
#include<vector>
using namespace std;
int main(){
string p,q;
while(cin>>p>>q){
int of=0;
int result=0;
vector<int> vec;
int len=min(p.size(),q.size());
for(int i=0;i<len;i++){
result=p.back()-'0'+q.back()-'0'+of;
p.pop_back();
q.pop_back();
if(result>=10){
result-=10;
of=1;
}
else{
of=0;
}
vec.push_back(result);
}
if(q.size()>0){
for(int i=q.size()-1;i>=0;i--){
result=q[i]-'0'+of;
if(result>=10){
result-=10;
of=1;
}
else{
of=0;
}
vec.push_back(result);
}
}
if(p.size()>0){
for(int i=p.size()-1;i>=0;i--){
result=p[i]-'0'+of;
if(result>=10){
result-=10;
of=1;
}
else{
of=0;
}
vec.push_back(result);
}
}
if(of==1){//若执行完上述操作,最高位仍有进位,再给最高位一个1
vec.push_back(1);
}
for(int i=vec.size()-1;i>=0;i--){
cout<<vec[i];
}
cout<<endl;
}
}