很基础的模拟竖式
2025-08-24 12:52:12
发布于:陕西
0阅读
0回复
0点赞
看懂了就找我加个团队吧!
#include<iostream>
#define int long long
using namespace std;
string s,t;
int a[101010],b[101010],c[101010],l1,l2,l;
signed main(){
cin>>s>>t;
/*转化*/l1=s.size(),l2=t.size();
//string->数组,倒序转化,方便列竖式
for(int i=1,j=l1-1;j>=0;i++,j--) a[i]=s[j]-48;
for(int i=1,j=l2-1;j>=0;i++,j--) b[i]=t[j]-48;
//模拟竖式,2种:
//1:多创建一个数组当结果
///*
l=max(l1,l2);
for(int i=1;i<=l;i++){
//得出每一行的和
int sum=a[i]+b[i]+c[i];
c[i]=sum%10;//更新当前位
c[i+1]+=sum/10;//算上进位
}
//判断是否有进位
if(c[l+1]>0) l++;
//倒序输出
for(int i=l;i>=1;i--) cout<<c[i];
//*/
//2:把竖式当成<把第2个数加进第1个数>
/*
l=max(l1,l2);
for(int i=1;i<=l;i++){
int sum=a[i]+b[i];
a[i]=sum%10;
a[i+1]+=sum/10;
}
//判断是否有进位
if(a[l+1]>0) l++;
//倒序输出
for(int i=l;i>=1;i--) cout<<a[i];
*/
return 0;
}
这里空空如也
有帮助,赞一个