高进度代码
2026-08-18 12:02:09
发布于:河南
2阅读
0回复
0点赞
具体看代码操作
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
string x,y;
const ll N=2e5;
ll a[N],b[N];
ll s[N];
int main(){
cin>>x>>y;
reverse(x.begin(),x.end());//反转字符串,使位数对齐
reverse(y.begin(),y.end());//要注意,现在顺序是个位在第一位
for(ll i=0;i<x.size();i++){//字符串存储需小于它的长度
a[i]=x[i]-'0';//存储数字
}
for(ll i=0;i<y.size();i++){
b[i]=y[i]-'0';
}
ll len=max(x.size(),y.size());//筛选最大的长度
for(ll i=0;i<len;i++){
s[i]+=a[i]+b[i];
if(s[i]>=10){//若有进位
s[i+1]+=s[i]/10;//则下一位加这一位的十位(因为位现在是从小到大)
s[i]%=10;//留下个位
}
}
if(s[len]>0)len++;//若len的长度已然超过了原本长度,则为防止数组越界,加1
for(ll i=len-1;i>=0;i--){//反转所以逆序输出
cout<<s[i];
}
return 0;
}
这里空空如也



有帮助,赞一个