[模板] 数学

Posted ubospica

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[模板] 数学相关的知识,希望对你有一定的参考价值。

数论

exgcd

用途

解不定方程 $ ax+by = c $

代码

ll exgcd(ll a,ll b,ll &x,ll &y){
    if(b==0){x=1,y=0;return a;}
    ll tmp=exgcd(b,a%b,y,x);
    y-=a/b*x;
    return tmp;
}

int main(){
    ll a,b,c;
    ll m,x,y;
    m=exgcd(a,b,x,y);
    if(c%m!=0)cout<<"No
"; //无解
    else{
        c/=m,x*=c,y*=c,a/=m,b/=m;
//令x取最小非负整数
        x1=x%b;if(x1<0)x1+=abs(b);
        y1=(c-a*x1)/b;
//令y取最小非负整数
        y1=y%a;if(y1<0)y1+=abs(a);//(y>=0?y%a:y%a+abs(a));
        x1=(c-b*y1)/a;
    }
}

excrt

用途

解线性同余方程组 $ x equiv a_i pmod{m_i} $

代码

ll excrt(ll *a,ll *m,ll n){
    ll a0=a[1],m0=m[1],x,y,g;
    rep(i,2,n){
        g=exgcd(m0,m[i],x,y);
        if((a[i]-a0)%g!=0)return -1;
        x=(a[i]-a0)/g*x%(m[i]/g);
        a0+=x*m0;
        m0=m0/g*m[i];
        a0%=m0; 
    }
    return a0<0?(a0%m0+m0):(a0%m0);
}

以上是关于[模板] 数学的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段2——.vue文件的模板

VSCode自定义代码片段(vue主模板)

Eclipse 中的通用代码片段或模板

调用模板化成员函数:帮助我理解另一个 *** 帖子中的代码片段

vscode代码片段生成vue模板

xml Eclipse模板(代码片段)检查参数并最终抛出IllegalArgumentException