首页 > 其他 > 详细

矩阵快速幂

时间:2020-08-16 20:46:04      阅读:102      评论:0      收藏:0      [点我收藏+]

 

设 A 为 P×M 的矩阵, B 为 M×Q 的矩阵,设矩阵 C 为矩阵 A 与 B 的乘积

在矩阵乘法中,C 矩阵的第 i 行第 j 列的数,就是由矩阵 A 第 i 行 M 个数与矩阵 B 第 j 列 M 个数分别相乘再相加得到的。

struct Matrix {
    ll a[5][5];
    Matrix() { memset(a, 0, sizeof a); } // 
    Matrix operator*(const Matrix &b) const {
        Matrix res;
        for (int i = 1; i <= 4; ++i)  //长度为4的矩阵相乘
            for (int j = 1; j <= 4; ++j)
                for (int k = 1; k <= 4; ++k)
                    res.a[i][j] = (res.a[i][j] + a[i][k] * b.a[k][j]) % mod;
        return res;
    }
} ans, base;
void qpow(int b) { //快速幂
    while (b) {
        if (b & 1) ans = ans * base;
        base = base * base;
        b >>= 1;
    }
}

 

矩阵快速幂

原文:https://www.cnblogs.com/blowhail/p/13513962.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!