利用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; }