思路
将两个数字用char数组存储,再转换成int型数据分别存储在两个栈中
将两栈内各位数字分别相加,和存在新开的栈中,无需进行进位处理
遍历存储结果栈中的元素,如果元素值大于9则取模,下一个元素+1
参考文献
C++ 代码
#include<iostream>
using namespace std;
const int N=100005;
char a[N],b[N];
int x[N],y[N],c[N],sx=-1,sy=-1,sc=-1;
int chg(char* e,int sm,int* w){
for(int i=0;e[i];i++){
sm++;
w[sm]=e[sm]-'0';}
return sm;
}
int main(){
cin>>a>>b;
sx=chg(a,sx,x);
sy=chg(b,sy,y);
while((sx>=0)&&(sy>=0)){
int z=x[sx--]+y[sy--];
c[++sc]=z;
}
while((sx>=0)||(sy>=0)){
if(sx>=0){
c[++sc]=x[sx--];
}
if(sy>=0){
c[++sc]=y[sy--];
}
}
for(int i=0;i<=sc;i++){
if(c[i]>9){
c[i]=c[i]%10;
c[i+1]++;
}
}
if(c[sc+1]!=0)sc++;
while(sc>=0){
cout<<c[sc--];
}
return 0;
}