114514
2024-07-23 18:50:11
发布于:广东
2阅读
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;
}
这里空空如也

有帮助,赞一个