大数的加减乘除

利用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;
}
原文地址:https://www.cnblogs.com/gardonkoo/p/7494393.html