adds( )
2024-07-03 12:07:10
发布于:广东
7阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
string adds(string s1,string s2){//两个加数
long long len=max(s1.size(),s2.size())+1,len1=s1.size(),len2=s2.size(),j=0;//定义3个length
short a1[len1],a2[len2],a3[len]={0,0,0,0};//定义3个数组,两个加数与和
bool t1,t2,t3=false;
string ans;
char temp;//定义变量
for(long long i=0;i<len1;i++) a1[len1-i-1]=s1[i]-'0';
for(long long i=0;i<len2;i++) a2[len2-i-1]=s2[i]-'0';//把两个加数逆序存进数组a1,a2中
for(long long i=0;i<len-1;i++){//竖式
if(i<len1&&i<len2){//如果第i位上都有数,那么成立
t1=(a1[i]>0)&&(a1[i]<10);
t2=(a2[i]>0)&&(a2[i]<10);//判断第i位上是否为数字
if(t1&&t2) a3[i]=a1[i]+a2[i];
else if(t1&&!(t2)) a3[i]=a1[i];
else if(!(t1)&&t2) a3[i]=a2[i];//第i位相加,存进数组a3里
}else if(!(i<len1)&&i<len2){//如果数组a2位上有数,那么成立
t2=(a2[i]>0)&&(a2[i]<10);//判断第i位上是否为数字
if(t2) a3[i]=a2[i];//第i位存进数组a3里
}else if(i<len1&&!(i<len2)){//如果数组a1位上有数,那么成立
t1=(a1[i]>0)&&(a1[i]<10);//判断第i位上是否为数字
if(t1) a3[i]=a1[i];//第i位存进数组a3里
}else break;//否则跳出循环
}
for(long long i=0;i<len;i++){//开始进位
if(a3[i]>9){//如果第i位上的数大于9,那么进位
a3[i+1]=a3[i+1]+a3[i]/10;//第i+1位加1
a3[i]=a3[i]%10;//第i位模以10
}
}
for(long long i=len;i>=0;i--){//最后逆序存进字符串ans里
if((a3[i]>0)&&(a3[i]<10)) t3=true;
if((a3[i]>=0)&&(a3[i]<10)&&t3){//判断前导0
ans+=" ";//ans加一个字符
temp=char(a3[i]+'0');
ans[j]=temp;//逆序存进字符串ans里
j++;
}
}
return ans;//返回ans(answer)
}
int main(){
string a,b;//定义变量
cin>>a>>b;//输入
cout<<adds(a,b)<<endl;//GJD输出
system("pause");//暂停
return 0;
}
//GMP_adds()
这里空空如也
有帮助,赞一个