c++高精模板

j结构体高精加乘除(除法为对int型的)

函数放在外面了

const int base=10000struct bigint
{
    int d[base];
    void clear()
    {
        memset(d,0,sizeof(d));
    }
};
inline bigint operator +(const bigint &a,const bigint &b)
{
    bigint c;
    c.clear();
    c.d[0]=max(a.d[0],b.d[0]);
    for(int i=1;i<=c.d[0];i++)
    {
        c.d[i]+=a.d[i]+b.d[i];
        c.d[i+1]=c.d[i]/base,c.d[i]%=base;
    }
    if(c.d[c.d[0]+1]) c.d[0]++;
    return c;    
}
inline bigint operator *(const bigint &a,const bigint &b)
{
    bigint c;
    c.clear();
    c.d[0]=a.d[0]+b.d[0]-1;
    for(int i=1;i<=a.d[0];i++)
        for(int j=1;j<=b.d[0];j++)
        {
            c.d[i+j-1]+=a.d[i]*b.d[j];
            c.d[i+j]+=c.d[i+j-1]/base;
            c.d[i+j-1]%=base;
        }
    if(c.d[c.d[0]+1]) c.d[0]++;
    return c;
}
inline bigint operator / (const bigint &a,const int b)
{
    bigint c;
    c.clear();
    int ns=0;
    for(int i=a.d[0];i>=1;i--)
    {
        ns=ns*base+a.d[i];
        c.d[i]=ns/b;
        ns%=b;
        if(!c.d[0] && c.d[i]) c.d[0]=i;
    }
    return c;
}

 

原文链接: https://www.cnblogs.com/hsez-cyx/p/12309519.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    c++高精模板

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/329266

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午5:04
下一篇 2023年3月1日 下午5:04

相关推荐