题解
2023-07-28 15:32:50
发布于:上海
2阅读
0回复
0点赞
问题在于利用数组逐位相加,以及进位的问题
#include <iostream>//老朋友
#include <string>//方便处理大数
#include <cmath>//提供max()
using namespace std;//导入头文件
string s1,s2;
int a[101],b[101],c[101];//枯燥的准备环节
// 数1^ 数2^ 和^
int main(){
cin>>s1>>s2;//记得输入
for(int i=0;i<s1.length();i++){
a[i]=s1[s1.length()-i-1]-'0';
}//处理第一个数,将字符串s1里的字符放进1号数组
for(int i=0;i<s2.size();i++){
b[i]=s2[s2.size()-i-1]-'0';
}//处理第二个数,将字符串s2里的字符放进2号数组
for(int i=0;i<max(s1.length(),s2.size());i++){//开始加法运算
c[i]+=a[i]+b[i];//将1号2号数组的对应数加进和数组的对应位
c[i+1]+=c[i]/10;//处理进位,将超出一位的部分除以十加到下一位去
c[i]%=10;//去掉超出的部位
}
int l=max(s1.length(),s2.size())-1;
if(c[l+1]){
l++;
}//处理和的长度
for(int i=l;i>=0;i--){
cout<<c[i];
}//倒序输出
return 0;
}
这里空空如也
有帮助,赞一个