本代码支持:
重载运算符 + - * / %
正负整数(%没有)
全高精度
我菜狗我直接放代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
namespace Bigint{
const int maxn=2e4+2;
struct bigint{
int len, a[maxn]; bool symbol;
// 数字长度, 数字, 符号
//初始化
bigint(int x=0)
{
if(x>=0) symbol=true;
else symbol=false,x=-x;
memset(a,0,sizeof(a));
for(len=1;x;++len)
{
a[len]=x%10,
x/=10;
}
--len;
}
//重载运算符[],使调用数位更方便
int &operator [](int i)
{
return a[i];
}
//字符串输入(当然,也可以用快读读入string)
void in()
{
string s;
cin>>s;
len=s.size();
for(int i=len-1;i>=1;--i)
{
a[len-i]=s[i]-'0';
}
if(s[0]=='-') symbol=false,--len;
else a[len]=s[0]-'0';
}
//进位并去除前导0
void flatten(int l)
{
len=l;
for(int i=1;i<=len;++i)
{
a[i+1]+=a[i]/10;
a[i]%=10;
}