791. 高精度加法
题目链接https://www.acwing.com/problem/content/793/
题目:
方法一:stack< int>
#include<iostream>
#include<cstdio>
#include<stack>
#include<cstring>
using namespace std;
stack<int> a,b,c;
int main(){
string s;
cin>>s;
for(int i=0;i<s.size();i++)
a.push(s[i]-'0');
cin>>s;
for(int i=0;i<s.size();i++)
b.push(s[i]-'0');
int t=0;
while(a.size()||b.size()){
int sum=0;
if(a.size()){
sum+=a.top();
a.pop();
}
if(b.size()){
sum+=b.top();
b.pop();
}
sum+=t;
c.push(sum%10);
t=sum/10;
}
while(t){
c.push(t%10);
t/=10;
}
int a[100010],k=0;
int flag=0;
while(c.size()){
if(c.top()==0&&!flag){
c.pop();
continue;
}
else flag=1;
printf("%d",c.top());
c.pop();
}
return 0;
}
方法二:vector< int>
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
vector<int > a,b,c;
void addc(){
int i=0;
int t=0;
while(i<a.size()||i<b.size()){
int sum=0;
if(i<a.size()){
sum+=a[i];
}
if(i<b.size()){
sum+=b[i];
}
sum+=t;
c.push_back(sum%10);
t=sum/10;
i++;
}
if(t) c.push_back(t);
}
int main(){
string s;
cin>>s;
for(int i=s.size()-1;i>=0;i--)
a.push_back(s[i]-'0');
cin>>s;
for(int i=s.size()-1;i>=0;i--)
b.push_back(s[i]-'0');
addc();
for(int i=c.size()-1;i>=0;i--)
printf("%d",c[i]);
return 0;
}