题解AC
2023-07-25 17:02:00
发布于:广东
4阅读
0回复
0点赞
//这道题是非常有难度的,需要考虑进位,很容易让新手进入迷茫(doge)
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+9;
string s1,s2;
int a[N],b[N],c[N];
int main(){
cin >> s1 >> s2;//s1是第一个数,s2是第二个数
//a,b的长度(位数)
int lena = s1.size();
int lenb = s2.size();
//反向输入
for(int i = 0;i < lena;i++)a[i] = s1[lena-i-1]-'0';
for(int i = 0;i < lenb;i++)b[i] = s2[lenb-i-1]-'0';
int lenc = max(lena,lenb);
//进行加法的过程
for(int i = 0;i < lenc;i++){
c[i] += a[i]+b[i];
if(c[i] >= 10){
c[i+1]+=c[i]/10;
c[i]%=10;
}
}
//判断最高位是否进位
if(c[lenc])lenc++;
//逆序输出
for(int i = lenc-1;i >= 0;i--)cout << c[i];
return 0;
}
这里空空如也
有帮助,赞一个