相关题目:
高精度加法https://www.acwing.com/problem/content/description/793/
相关代码1:
#include<iostream>
#include<string>
#include<stack>
using namespace std;
void add(string s1,string s2){
int t=0; //t表示的是上一位的进位。
stack<int> a;
int i,j;
for(i=s1.size()-1,j=s2.size()-1;i>=0&&j>=0;i--,j--){
t=s1[i]-'0'+s2[j]-'0'+t;
a.push(t%10);
t=t/10; //表示的是进位数。
}
if(i>j){
while(i>=0){
a.push((s1[i]-'0'+t)%10);
t=(s1[i]-'0'+t)/10;
i--;
}
}
else if(i<j){
while(j>=0){
a.push((s2[j]-'0'+t)%10);
t=(s2[j]-'0'+t)/10;
j--;
}
}
if(t){
a.push(1);
}
while(a.size()>0){
cout<<a.top();
a.pop();
}
}
int main(){
string s1,s2;
cin>>s1>>s2;
add(s1,s2);
return 0;
}
相关代码2:
#include<iostream>
#include<string>
#include<stack>
using namespace std;
void add(string s1,string s2){
int t=0; //t表示的是上一位的进位。
stack<int> a;
int i,j;
for(i=s1.size()-1,j=s2.size()-1;i>=0||j>=0;i--,j--){
if(i>=0){
t=t+s1[i]-'0';
}
if(j>=0){
t=t+s2[j]-'0';
}
a.push(t%10);
t=t/10; //表示的是进位数。
}
if(t){
a.push(1);
}
while(a.size()>0){
cout<<a.top();
a.pop();
}
}
int main(){
string s1,s2;
cin>>s1>>s2;
add(s1,s2);
return 0;
}
相关代码3:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
void add(string s1,string s2){
string s;
int t=0;
for(int i=s1.size()-1,j=s2.size()-1;i>=0||j>=0;i--,j--){
if(i>=0){
t=t+s1[i]-'0';
}
if(j>=0){
t=t+s2[j]-'0';
}
s+=(t%10)+'0';
t=t/10; //t表示的是下次需要进的位数。
}
if(t){
s+='1';
}
reverse(s.begin(),s.end());
cout<<s;
}
int main(){
string s1,s2;
cin>>s1>>s2;
add(s1,s2);
return 0;
}