您的位置:首页 > 其它

大数的加减乘除

2017-09-08 14:17 183 查看
利用string类或整形数组可以实现大数的加减乘除。string类具有较好的动态增长性,整形数组处理数字的运算比较方便。

两者都是将运算的对象按照各个数位保存起来,每个数位按照对应的运算法则进行运算。

#include <string>
using namespace std;


1. 大数相加

string BigAdd(string a, string b)
{
if (a.empty())
{
return b;
}
if (b.empty())
{
return a;
}
if (a.size() < b.size())
{
a.insert(a.begin(), b.size() - a.size(), '0');
}
if (a.size() > b.size())
{
b.insert(b.begin(), b.size() - b.size(), '0');
}
int len = a.size();
int carry = 0;
for (int i = len - 1; i >= 0; --i)
{
int sum = a[i] - '0' + b[i] - '0' + carry;
a[i] = sum % 10 + '0';
carry = sum / 10;
}
if (carry)
{
a.insert(a.begin(), 1, static_cast<char> (carry + '0'));
}
return a;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: