首页 > 其他 > 详细

Bigint 板子

时间:2021-04-25 00:18:43      阅读:16      评论:0      收藏:0      [点我收藏+]
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;
}

Bigint 板子

原文:https://www.cnblogs.com/Softwarer1412/p/14698115.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!