我是利用栈来输出的(大佬们会用压位去做这个题目,我还得去学习一下)(已经是学会了,有兴趣的朋友可以去看看)
我的想法就是从低位开始一个个相加,再存放在栈里面。
但是有个问题,不知道有没有大佬可以帮我解决,当我用cin输入的时候是可以ac的,但用getline的时候就会显示错误。错误格式为下图所示。
#include<iostream>
#include<iomanip>
#include<cstring>
#include<sstream>
#include<algorithm>
#include<stack>
using namespace std;
int main(){
string str1,str2;
//getline(cin,str1);
//getline(cin,str2);
cin>>str1;
cin>>str2;
stack<int> Q;
int flag=0;
int ch1,ch2;
if(str1.length()<str2.length()){
str1.swap(str2);
}
while(!str2.empty()){
ch1=(int)str1.back()-48;
ch2=(int)str2.back()-48;
if((ch1+ch2+flag)>=10){
ch1=ch1+ch2+flag-10;
flag=1;
}else{
ch1=ch1+ch2+flag;
flag=0;
}
Q.push(ch1);
str1.pop_back();
str2.pop_back();
}
while(!str1.empty()){
ch1=(int)str1.back()-48;
if((ch1+flag)>=10){
ch1=ch1+flag-10;
flag=1;
}else{
ch1=ch1+flag;
flag=0;
}
Q.push(ch1);
str1.pop_back();
}
if(flag==1){
Q.push(flag);
}
while(!Q.empty()){
int i;
i=Q.top();
Q.pop();
cout<<i;
}
system("pause");
return 0;
}