超长整数相加(HJ78)

一:解题思路

Time:O(n),Space:O(1)

二:完整代码示例 (C++版和Java版)

C++代码如下:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string a = "";
    string b = "";

    while (cin >> a >> b)
    {
        while (a.size() < b.size())
            a = "0" + a;
        while (a.size() > b.size())
            b = "0" + b;

        int temp = 0;
        int carry = 0;
        for (int i = a.size() - 1; i >= 0; i--)
        {
            temp = a[i] - '0' + b[i] - '0' + carry;
            a[i] = temp % 10+'0';

            if (temp / 10)
                carry = 1;
            else
                carry = 0;
        }

        if (carry)
            a = "1" + a;
        cout << a << endl;
    }

    return 0;
}
posted @ 2020-07-31 15:39  repinkply  阅读(593)  评论(0)    收藏  举报