高精度
2024-07-23 14:53:17
发布于:浙江
5阅读
0回复
0点赞
#include <iostream>
using namespace std;
string s1,s2;
int a[10005],b[10005];
int c[10005];
int main(){
cin >> s1 >> s2;
int lenA=s1.size();
int lenB=s2.size();
for(int i=0; i<lenA; i++){
a[i]= s1[lenA - 1 -i] - '0';
}
for(int i=0; i<lenB; i++){
b[i] = s2[lenB - 1 - i] - '0';
}
/*
for(int i=0; i<lenA; i++){//反转了
cout << a[i];
}
*/
int len = max(lenA,lenB);
for(int i=0; i<len; i++){
c[i]=a[i]+b[i]+c[i];
if(c[i]>=10){
c[i]%= 10;
c[i+1]+=1;
}
}
if(c[len] > 0) len++;
for(int i=len-1; i>=0; i--){
cout << c[i];
}
return 0;
}
/*
1.用字符串存储输入的两个数字
2.将字符串逆序储存到一维数组中
2.1 逆序
2.2 将字符变为数字
3.模拟加法操作
3.1循环次数为较长数字的长度
3.2按位做加法
3.3进位
if(c[i] >= 10){
c[i] %=10;
c[i+1] += 1;
}
4.最高位进位的判断
if(c[len] > 0) len++;
5.反过来输出
*/
这里空空如也
有帮助,赞一个