Bigint 板子

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;
}
posted @ 2021-04-24 21:06  今天AC了吗  阅读(68)  评论(0)    收藏  举报