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

    struct M
    {
        LL a[3][3];
        void init1()//化单位矩阵
        {
            memset(a, 0, sizeof(a));
            a[0][0]=1;
            a[1][1]=1;
            a[2][2]=1;
        }
        void init0()//清空矩阵
        {
           memset(a, 0, sizeof(a));
        }
    };
    M mul (M a,M b)
    {
        M ans;
        for (int i=0; i<maxn; i++)
        {
            for (int j=0; j<maxn; j++)
            {
                ans.a[i][j]=0;
                for (int k=0; k<maxx; k++)
                {
                    ans.a[i][j]+=a.a[i][k]*b.a[k][j];
                    ans.a[i][j]%=mod;
                }
            }
        }
        return ans;
    }
    M qpow(M a,LL n)//快速幂部分
    {
        M ans;
        ans.init();
        //这里也可以初始化我要b*a^n中的b矩阵
        while(n)
        {
            if (n&1)ans=mul(ans,a);
            a=mul(a,a);
            n/=2;
        }
        return ans;
    }
    void output(M a)//随时打印判断
    {
        for(int i=0; i<3; ++i)
        {
            for(int j=0; j<3; ++j)
            {
                cout << a.a[i][j] << " ";
            }
            cout << endl;
        }
    }
    有不懂欢迎咨询 QQ:1326487164(添加时记得备注)
  • 相关阅读:
    vim python extension
    aws msk
    Install python3
    sns
    inventory
    批量添加监听端口
    template screen
    DNS name
    add jar and proxy repo
    模型诊断论文心得
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9853757.html
Copyright © 2011-2022 走看看