[NOI2013]矩阵游戏
对于不会矩阵乘法的孩子,你们有救啦。(矩阵乘法版直接拉到下面)
【分析】
我们先从简单的来推。考虑第一行。
我们可以根据等比数列推出通项式(纸上划划就行了)
然而这只是第一步。
上述公式其实是建立在f[i][x]上的。
根据f[i][m]和f[i+1][1]的公式,我们可以推出f[i+1][1]和f[i][1]的关系。(其实只要再乘上c,加上d即可)
然后是不是有发现了一个规律?把和a,b,c,d有关的全部当成常数,这个公式可以变成最上面的那个公式!这样,我们可以轻松的求出f[x][1]的值。
之后有两个方法:
求出f[n][1]并递推至f[n][m];
求出f[n+1][1]后,减去d除以c。
我选了第二种。虽然快了一点,但是还要求逆元。(都做到这种份上了,逆元也不过如此了)
到此为止,就求完了。
【注意】
①因为n和m的范围很大,我们要用到费马小定理。
x^a=x^(a%phi(p)+phi(p)) (mod p)
ps:n,m在指数中出现时才可用费马小定理,系数中出现不能用!!!
这样,我们可以把n先对(p-1)取模,再计算。(因为除掉的那些乘积是1)
②对于a=1的情况要特判。
矩阵乘法版
【分析】
很容易推出,A{a,b} B{c,d}
{0,1} {0,1}
A^(m-1)
B=B*A
B=B^(n-1)
A=A*B
Ans=A[0][0]+A[0][1]
Ps:考虑到A,B的第二行不会对答案造成贡献,直接删去,优化矩阵乘法的常数。
{c,d}*{a,b}={a*c,b*c+d}
__EOF__

本文作者:shenben
本文链接:https://www.cnblogs.com/shenben/p/6413601.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/shenben/p/6413601.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术