80求调
查看原帖
80求调
1551702
hellooa楼主2025/1/17 23:07
#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
    char a[100086];
    char b[100086];
    int count1 = 0;
    int count2 = 0;
    cin.getline(a, 100086);
    while(a[count1]!= '\0')
    {
        count1++;
    }
    cin.getline(b, 100086);
    while(b[count2]!= '\0')
    {
        count2++;
    }
    int small = min(count1, count2);
    int large = max(count1, count2);

    int carry = 0;  // 进位
    char result[100086] = {0};  // 结果
    int index = 0;

    for(int i = small - 1; i >= 0; i--)
    {
        int digitsum = (a[i] - '0') + (b[i] - '0') + carry;
        carry = digitsum / 10;
        result[index++] = (digitsum % 10) + '0';
    }

    // 如果较长的数还有剩余位
    for(int i = large - small - 1; i >= 0; i--)
    {
        if (large == count1)
        {
            int digitsum = (a[small + i] - '0') + carry;
            carry = digitsum / 10;
            result[index++] = (digitsum % 10) + '0';
        }
        else
        {
            int digitsum = (b[small + i] - '0') + carry;
            carry = digitsum / 10;
            result[index++] = (digitsum % 10) + '0';
        }
    }

    // 如果最后还有进位
    if (carry)
    {
        result[index++] = carry + '0';
    }

    // 反转结果
    reverse(result, result + index);

    cout << result << endl;

    return 0;
}
2025/1/17 23:07
加载中...