起因
在做算法题时经常会处理一些较大的超过c++long long类型的数据,而在网上寻找到的大数运算代码良莠不齐。遂自己敲了一份,代码目前有许多没有优化的地方,希望大家可以指出其中的不足之处,一起进步。
代码实现及注释
#include <bits/stdc++.h>
using namespace std;
class Operation
{
public:
Operation() {} //默认构造函数
bool cmp(string a, string b); //比较两个“数字”的大小
void Carry(string &c, int t); //进位操作,当某一位超过十是使用此函数进位
string Add(string a, string b); //大数加法
string Less(string a, string b); //大数减法
string Multiply(string a, string b); //大数乘法
string Except_Judge(string a, string b, int n); //大数除法模式选择(大数小或小除大)
string Except_A(string a, string b, int n); //大除小
string Except_B(string a, string b, int n); //小除大高精度除法,其中n为自定义的小数位数
string Module(string a, string b); //大数求模
};
/*比较大小*/
bool Operation::cmp(string a, string b)
{
if (a.size() < b.size()) //首先比较长度
return true; //长度大的肯定大
if (a.size() > b.size())
return false;
return a < b; //若长度相等可直接比较
}
/*进位操作*/
void Operation::C