#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
char a1[N], b1[N], c1[N];
int a[N], b[N], c[N];
int main()
{
cin >> a1 >> b1;
int l1 = strlen(a1);
int l2 = strlen(b1);
//转成数字
for(int i = 1; i <= l1; i ++){
a[i] = a1[l1 - i] - '0'; //123,a[1] = 3
}
for(int i = 1; i <= l2; i ++){
b[i] = b1[l2 - i] - '0';
}
//计算和的每一位
int k = 1, x = 0;
int len = max(l1, l2);
int l = len;
while(len --){
c[k] = a[k] + b[k] + x; //x是进位
x = (a[k] + b[k]) / 10;
c[k] = (a[k] + b[k]) % 10;
k ++;
}
/*减法
while(len --){
if(a[k] >= b[k]) c[k] = a[k] - b[k];
else{
c[k] = a[k] + 10 - b[k];
a[k + 1] -= 1; //借位
}
k ++;
}
*///减法输出时要处理前导零
int sum = 0;
for(int i = l; i >= 1; i --){
sum = sum * 10 + c[i];
}
cout << sum;
}
高精度加减法(C++)
最新推荐文章于 2024-09-16 17:46:36 发布