代码1:
#include <bits/stdc++.h>
using namespace std;
//1.字符串读入
//2.字符串转数组
//3.竖-加法
//4.消前导0
//5.倒序输出
string x,y;
int a[100000],b[100000],c[100000],la,lb,lc;
int main(){
cin>>x>>y;
la=x.length();
lb=y.length();
for(int i=0;i<la;i++){
a[la-i]=x[i]-'0';
}
for(int i=0;i<lb;i++){
b[lb-i]=y[i]-'0';
}
lc=max(la,lb);
for(int i=1;i<=lc;i++){
c[i]+=a[i]+b[i];
c[i+1]=c[i]/10;
c[i]%=10;
}
if(c[lc+1]>0){
lc++;
}
for(int i=lc;i>=1;i--){
cout<<c[i];
}
}
代码2:
#include <bits/stdc++.h>
using namespace std;
int main(){
string s1,s2;
int a1[100000],a2[100000],a3[100000]={0};//定义数组初始化为0
getline(cin,s1);//输入2个字符串
getline(cin,s2);
for(int i=0;i<s1.size();i++){//将s1倒序存进a1数组
a1[s1.size()-i-1]=s1[i]-'0';//数据类型转换int a1和string s1
}
for(int i=0;i<s2.size();i++){//将s2倒序存进a2数组
a2[s2.size()-i-1]=s2[i]-'0';//数据类型转换int a2和string s2
}
int len=s1.size();//s1和s2比较,较大的存进len
if(s2.size()>s1.size()){
len=s2.size();
}
for(int i=0;i<len;i++){//竖式每位相加存进a3数组
a3[i]=a1[i]+a2[i];
}
for(int i=0;i<len;i++){
if(a3[i]>=10){
a3[i+1]=a3[i+1]+a3[i]/10;//a3[i]/10进位
a3[i]=a3[i]%10; //进位后留下的数
}
}
if(a3[len]!=0){//倒序输出前判断从哪一位开始
len++;//由于之前我们将数组全初始化为0,并且两个数相加结果不会超过更多的那一位数加1 如:98+5=103
}
for(int i=len-1;i>=0;i--){
cout<<a3[i];
}
}
记录我的b站算法学习
代码1-作者大大:嘉持
代码2-作者大大:LetsLearning