• 中国剩余定理模板&俄罗斯乘法


    void ex_gcd(ll a,ll b,ll &d,ll &x,ll &y){
        if(!b){d=a;x=1LL;y=0LL;}
        else {ex_gcd(b,a%b,d,y,x);y-=x*(a/b);}
    }
    /////大数乘法取模转换成加法取模,避免爆long long ll mult(ll a,ll k,ll m){ ll res
    =0; while(k){ if(k&1LL)res=(res+a)%m; k>>=1; a=(a<<1)%m; } return res; }
    ///// 这段在正常的中国剩余定理中可以去掉 ll china(
    int n,ll *a,ll *m){ ll M=1,d,y,x=0; for(int i=0;i<n;i++)M*=m[i]; for(int i=0;i<n;i++){ ll w=M/m[i]; ex_gcd(m[i],w,d,d,y); x=(x+mult(y,mult(w,a[i],M),M))%M; } return (x+M)%M; }
  • 相关阅读:
    大数据面经
    mysql复习(2)
    java容器
    内存管理
    垃圾收集
    输入/输出流
    排序算法的稳定性及其汇总
    java传值与传引用
    linux复习6
    linux复习5
  • 原文地址:https://www.cnblogs.com/pk28/p/5721610.html
Copyright © 2020-2023  润新知