无线OSS-高精度整数加法(HJ57)

一:解题思路

这道题目和 leetcode67 二进制求和 有些类似,可以放在一起进行学习。

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

C++:

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

string addLongNumber(string a, string b)
{
    int i = a.size() - 1;
    int j = b.size() - 1;
    int carry = 0;
    string sb = "";

    while (i >= 0 || j >= 0 || carry != 0)
    {
        int sum = carry;
        if (i >= 0) sum += a[i--] - '0';
        if (j >= 0) sum += b[j--] - '0';
        sb.append(to_string(sum%10));
        carry = sum / 10;
    }

    reverse(sb.begin(),sb.end());

    return sb;
}

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

    while (cin >> a >> b)
    {
        cout << addLongNumber(a,b) << endl;
    }

    return 0;
}

 

posted @ 2020-08-03 17:46  repinkply  阅读(236)  评论(0)    收藏  举报