1.矩阵乘法
设矩阵有
性质: 结合律,但不满足交换律。
mat operator *(mat a,mat b)
{
mat c;
memset(c.mat,0,sizeof(c.mat));
for(int k=1;k<=n;k++)
{
for(int i=1;i<=n;i++)
{
for(int z=1;z<=n;z++)
{
c.mat[i][z]+=a.mat[i][k]*b.mat[k][z]%mod;
c.mat[i][z]%=mod;
}
}
}
return c;
}
2.矩阵快速幂
由于结合律,我们可以使用类似一般快速幂的方法快速计算
值得注意的是,初始矩阵要满足
mat operator ^(mat a,int b)
{
mat c;
memset(c.mat,0,sizeof(c.mat));
for(int i=1;i<=n;i++)
{
c.mat[i][i]=1;
}
while(b)
{
if(b&1)
{
c=c*a;
}
a=a*a;
b>>=1;
}
return c;
}
3.用处
用于加速递推。下面是斐波那契数列的推导:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】