struct Bigint{
int len,a[MAXN];
Bigint(int x = 0){
memset(a,0,sizeof(a));
for(len = 1;x;len++)
a[len] = x%10,x/=10;
len --;
}
int &operator [](int i){
return a[i];
}
void flatten(int L){//展平,一次性处理1到L范围内的进位
len = L;
for(int i = 1;i<=len;i++)
a[i+1] += a[i]/10,a[i]%=10;
for(;!a[len];)len--;//将长度置为有效长度
}
void print(){
for(int i = max(len,1);i>=1;i--)
printf("%d",a[i]);
}
};
Bigint operator+(Bigint &a,Bigint &b){
Bigint c;
int len = max(a.len,b.len);
for(int i = 1; i <= len;i++)
c[i] += a[i]+b[i];
c.flatten(len+1);
return c;
}
Bigint operator*(Bigint& a,int b){
Bigint c;
int len = a.len;
for(int i = 1 ; i <=len ; i++ )
c[i] = a[i]*b;
c.flatten(len+11);
return c;
}
原文:https://www.cnblogs.com/Softwarer1412/p/14698115.html