114514
2024-07-23 18:50:11
发布于:广东
0阅读
0回复
0点赞
由于A+B problem有很多陷阱,为了防止数字超出long long的范围我们应该使用高精度加法来解决问题
话不多说上代码
#include<bits/stdc++.h>
using namespace std;
const int MX = 100005;
char s[MX], t[MX];
int a[MX], b[MX];
int c[MX]; // 答案数组
int main() {
cin >> s >> t;
int len1 = strlen(s), len2 = strlen(t);
// 将字符串逆序存入数组,方便高精度加法计算
for (int i = 0; i < len1; ++i) {
a[i] = s[len1 - i - 1] - '0';
}
for (int i = 0; i < len2; ++i) {
b[i] = t[len2 - i - 1] - '0';
}
int len = max(len1, len2);
for (int i = 0; i < len; ++i) {
c[i] += a[i] + b[i];
if (c[i] >= 10) {
c[i] -= 10;
c[i + 1]++; // 进位
}
}
// 找到最高位
if(c[len]) cout << c[len];
// 输出结果,逆序输出
for (int i = len - 1; i >= 0; --i) {
cout << c[i];
}
return 0;
}
这里空空如也
有帮助,赞一个