a
2023-08-15 16:17:22
发布于:广东
4阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int a[1000005];//创建a数组
int b[1000005];//创建b数组
int c[1000005];//创建c数组
int main(){
//problem 求高精度a+b
//1.储存代码
string s1,s2;
cin>>s1>>s2;
int lena=s1.size();//获取数字a的长度
int lenb=s2.size();//获取数字b的长度
//1.2方便储存
for(int i=0;i<lena;i++){//逆序存储b数字
a[i]=s1[lena-i-1]-'0';
//q:为什么-'0' a;因为输入的数字的字符类型数字,我们要把他转变为数字类型再求
}
for(int i=0;i<lenb;i++){
b[i]=s2[lenb-i-1]-'0';//逆序存储b数字
}
//2做加法
//2.1同位计算 从个位开始,逐步相加 满十进一
int len=max(lena,lenb);
//首先获取较长长度的字符串长度
for(int i=0;i<len;i++){
//通过for循环一一相加
c[i]+=a[i]+b[i];//储存当前第i位相加的答案
if(c[i]>=10){
c[i]-=10;//进位
c[i+1]++;
}
}
//3如果最高位进位了,长度要+1 if(c[len]>0)len++; //4
逆序输出
for(int i=len-1;i>=0;i--)cout<<c[i];
return 0;
}
这里空空如也
有帮助,赞一个