矩阵快速幂 c++代码 #超明白 #记住我

矩阵快速幂

阅读这篇博客之前,请先行学习矩阵,谢谢

矩阵乘法 不靠谱解释 :
若A为n×k矩阵,B为k×m矩阵,则它们的乘积AB(有时记做A·B)将是一个n×m矩阵
其中,矩阵的每一个元素一一对应相乘,相加
前一个矩阵的列数应该等于后一个矩阵的行数
得出的矩阵行数等于前一个矩阵的行数,列数等于后一个矩阵的行数
自己去学,不太想讲,一篇文章:矩阵乘除法

其实是博主能力不够,见谅
好了,不靠谱模式 start
代码:cpp

矩阵快速幂的函数 
const int MOD=10000;
struct mat
{
    int a[2][2];
};
mat mat_mul(mat x,mat y)
{
    mat res;
    memset(res.a,0,sizeof(res.a));
    for(int i=0;i<2;i++)
    for(int j=0;j<2;j++)
    for(int k=0;k<2;k++)
    {
        res.a[i][j]+=x.a[i][k]*y.a[k][j];
        res.a[i][j]%=MOD;//可以有,也可以没有,看题目要求
    }
    return res;
 } 

得到的就是x的y次方
速度挺快的,比pow好多了
博主还有一篇讲快速幂的博文:某蒟蒻的文章
原理自己去查查吧:博主要睡了
谢谢阅读,可以点个赞吗
晚安
如果有空,我会写一篇用矩阵求斐波那契数列的文章
或许会更详细吧

你可能感兴趣的:(毛大帅逼的cpp爆零生涯,数论)