码迷,mamicode.com
首页 > 其他好文 > 详细

大数相加

时间:2015-09-06 16:17:46      阅读:134      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!