矩阵快速幂基本应用。

对于矩阵乘法与递推式之间的关系:

如:在斐波那契数列之中

f[i] = 1*f[i-1]+1*f[i-2]  f[i-1] = 1*f[i-1] + 0*f[i-2]。即

所以,

就这两幅图完美诠释了斐波那契数列如何用矩阵来实现。

 #include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
const int Mod=;
struct mat{
ll a[][];
};
mat mat_mul(mat x,mat y){
mat ans;
memset(ans.a,,sizeof(ans.a));
for (int i=;i<;i++){
for (int j=;j<;j++)
for (int k=;k<;k++)
ans.a[i][j]=ans.a[i][j]+(x.a[i][k]*y.a[k][j])%Mod;
}
return ans;
}
ll mat_pow(ll n){
mat c,res;
c.a[][]=c.a[][]=c.a[][]=;
c.a[][]=;
memset(res.a,,sizeof(res.a));
for (int i=;i<;i++) res.a[i][i]=;
while (n){
if (n&) res=mat_mul(res,c);
c=mat_mul(c,c);
n>>=;
}
return res.a[][]%Mod;
}
int main(){
ll n;
while (cin >> n && n!=-){
cout << mat_pow(n) << endl;
}
return ;
}

最新文章

  1. ABAP面试问题及侧重点
  2. maven项目依赖小试牛刀
  3. C++ STL set集合容器
  4. digitalocean解释:private networking和user data、IPv6是什么意思
  5. 【Android Developers Training】 78. 序言:执行网络操作
  6. RedHat7下PostGIS源码安装
  7. sql 的一些总结
  8. Xposed 框架 hook 简介 原理 案例 MD
  9. jQuery应用实例5:表单验证
  10. STM32 一直进入串口接收中断
  11. Mac下 如何配置虚拟机软件Parallel Desktop--超详细
  12. 将字符串类型转化为date类型
  13. Python BeautifulSoup的使用
  14. CoreAudio实现录音播音和扬声器听筒模式的切换
  15. centos启动错误:Inodes that were part of a corrupted orphan linked list found.
  16. bzoj2314: 士兵的放置(树形DP)
  17. php7.33 configure
  18. angular指令,异步调用数据,监控数据的变化(自定义一个表头的指令)
  19. python监控linux内存并写入mongodb
  20. [EffectiveC++]item38:通过复合塑膜出has -a 或“根据某物实现出”

热门文章

  1. Python3 urllib库和requests库
  2. 中介者模式(QQ聊天室我觉得是个很生动的例子简单易懂)
  3. python协程函数、递归、匿名函数与内置函数使用、模块与包
  4. 打开子页面及刷新父页面 window.open window.opener.reload()
  5. dos常用命令使用说明
  6. MongoDB安装为Windows服务方法与注意事项
  7. MFC框架仿真&lt;一&gt;
  8. POI解析Excel文件
  9. hdu1251 && hud 1247 (字典树)
  10. shell 脚本 删除文件内容为空的文件