矩阵快速幂
矩阵快速幂
一类经常出现在优化问题中的数学方法
快速幂#
给定
其中
对于这种求极大数的乘方问题,我们都利用快速幂来解决
设
可以得到
对于
那么对于计算有什么好处呢
对于连续的
这样我们就可以迭代了
a = a * a;
LL qmi(int a ,int b ,int p)
{
LL res = 1 % p;
while(b)
{
if(b & 1) res = res * a % p;
a = (LL) a * a % p;
b >>= 1;
}
return res;
}
然后是矩阵快速幂的问题
我们知道幂运算不只是对实数域有用,复数域,矩阵同样适用
对于
所以运算符重载和定义乘法函数均可
void mul(int c[][N] , int a[][N] , int b[][N]) // c = a * b
{
static int t[N][N];
memset(t , 0 , sizeof t);
for(int i = 0 ; i < N ; i ++)
for(int j = 0 ; j < N ; j ++)
for(int k = 0 ; k < N ; k ++)
t[i][j] = (t[i][j] + (LL) a[i][k] * b[k][j]) % p;
memcpy(t , c , sizeof t);
}
void qmi(int a[][N] , int n)
{
int res[N][N];
for(int i = 0 ; i < N ; i ++)
res[i][i] = 1;
while (n)
{
if (n & 1) mul(res, res, w);
mul(w, w, w);
n >>= 1;
}
}
然后就是针对实际问题了
比如求
我们知道
那我们构造一个向量
可知
那么
改写成矩阵形式
即
可得
剩下就可以交给快速幂了
这样由原来的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端