这道题(有点模拟了,但不多)
2023-12-05 20:51:50
发布于:上海
26阅读
0回复
0点赞
思路都在代码里(上课才教
#include<bits/stdc++.h>
using namespace std;
#define N 10005
string s1,s2;
int n1[N],n2[N],ns[N];
string Plus(string a,string b){
int l1,l2,len;
memset(ns,0,sizeof(ns));//将ns全部清0
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());//最低位对齐
l1=a.length();
l2=b.length();
for(int i=0;i<l1;++i) n1[i]=a[i]-'0';//将字符变成整数
for(int i=0;i<l2;++i) n2[i]=b[i]-'0';
len=max(l1,l2)+1;//长度拉满
for(int i=0;i<len;++i){//从最低位开始做加法,并解决进位问题
ns[i]+=n1[i]+n2[i];
if(ns[i] > 9)
{//需要进位
ns[i]-=10;
ns[i+1]++;
}
}
while(len>1&&ns[len-1]==0) len--;//调整前导0
string ans="";
for(int i=len-1;i>=0;--i){
ans+=ns[i]+'0';
}
return ans;
}
int main(){
cin>>s1>>s2;
cout<<Plus(s1,s2)<<endl;
}
全部评论 1
伸进
2024-07-03 来自 上海
0你上课看acgo?
2024-07-03 来自 上海
0不在(
2024-07-03 来自 上海
0你是谁
2024-07-03 来自 上海
0
有帮助,赞一个