首页 > 其他 > 详细

大数相加

时间:2015-09-06 16:16:24      阅读:237      评论:0      收藏:0      [点我收藏+]

题目很简单,就是实现两个很大整数的相加操作,具体描述参见 A + B Problem II

直接贴一个我写的代码:

string bigIntegerAdd(string s1, string s2)
{
    int len1 = s1.size();
    int len2 = s2.size();
    int len = len1 > len2 ? len1+1 : len2+1;
    string res(len, 0);    

    int i, j, k;
    int carry = 0, sum;
    for (i = len1-1, j = len2-1, k = len-1; i >= 0 || j >= 0; i--, j--, k--)
    {
        sum = carry;
        if (i >= 0)
            sum += s1[i] - 0;
        if (j >= 0)
            sum += s2[j] - 0;
        if (sum >= 10)
        {
            res[k] += sum - 10;
            carry = 1;
        }
        else
        {
            res[k] += sum;
            carry = 0;
        }
    }
    if (carry == 1)
    {
        res[k] = 1;
        return res;
    }
    else
        return res.substr(1);
}

reference:

C++ string 实现大整数相加减

C语言实现高精度大整数的加法

有兴趣的读者可以尝试着实现其他运算,比如相减、相乘、相除。

大数相加

原文:http://www.cnblogs.com/gattaca/p/4785739.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!