zoukankan      html  css  js  c++  java
  • 快速幂模板

    //快速幂
    ll quickMod(ll a,ll b,ll mod){
        ll ans=1;
        while(b){
            if(b&1){
                ans=(ans*a)%mod;
            }
            a=(a*a)%mod;
            b>>=1;
        }
        return ans;
    }
    
    //矩阵快速幂
    struct Matrix{
        int matrix[maxn][maxn];
        Matrix(){}
        Matrix(int sign){
            for(int i=1;i<=sign;i++){
                for(int j=1;j<=sign;j++){
                    if(i==j) matrix[i][j]=1;
                    else matrix[i][j]=0;
                }
            }
        }
    };
    Matrix add(Matrix* a,Matrix* b){
        Matrix tmp;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                tmp.matrix[i][j]=a->matrix[i][j]+b->matrix[i][j];
            }
        }
        return tmp;
    }
    Matrix subtract(Matrix* a,Matrix* b){
        Matrix tmp;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                tmp.matrix[i][j]=a->matrix[i][j]-b->matrix[i][j];
            }
        }
        return tmp;
    }
    Matrix multiply(Matrix* a,Matrix* b){
        Matrix tmp;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                tmp.matrix[i][j]=0;
                for(int k=1;k<=n;k++){
                    tmp.matrix[i][j]+=a->matrix[i][k]*b->matrix[k][j];
                }
            }
        }
        return tmp;
    }
    Matrix quickMod(Matrix base,int b){
        Matrix tmp;
        Matrix ans(n);
        while(b){
            if(b&1){
                tmp=multiply(&ans,&base);
            }
            ans=tmp;
            tmp=multiply(&base,&base);
            base=tmp;
            b>>=1;
        }
        return ans;
    }
    

      

  • 相关阅读:
    工作中会用到的知识点(二)
    canvas 绘制图形
    CSS 清除浮动的方法
    倒计时
    JavaScript 对象
    推荐一款分页插件
    HTML5 Video标签
    idea lua插件设置Lua SDK
    Springboot访问 图片image css js资源文件
    nginx基本配置与参数说明
  • 原文地址:https://www.cnblogs.com/imzscilovecode/p/7966676.html
Copyright © 2011-2022 走看看