您的位置:首页 > 其它

大数相加

2015-09-06 15:29 211 查看
题目很简单,就是实现两个很大整数的相加操作,具体描述参见 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语言实现高精度大整数的加法

有兴趣的读者可以尝试着实现其他运算,比如相减、相乘、相除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: