本篇博客先给出矩阵快速幂以及利用矩阵快速幂求斐波那契数列的模板,讲解待更新……

const int N=10;
int tmp[N][N];
void multi(int a[][N],int b[][N],int n)
{memset(tmp,0,sizeof tmp);for(int i=0;i<n;i++)for(int j=0;j<n;j++)for(int k=0;k<n;k++)tmp[i][j]+=a[i][k]*b[k][j];for(int i=0;i<n;i++)for(int j=0;j<n;j++)a[i][j]=tmp[i][j];
}
int res[N][N];
void Pow(int a[][N],int n)
{memset(res,0,sizeof res);//n是幂,N是矩阵大小for(int i=0;i<N;i++) res[i][i]=1;while(n){if(n&1)multi(res,a,N);//res=res*a;复制直接在multi里面实现了;multi(a,a,N);//a=a*an>>=1;}
}
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2;
const int MOD=1000000009;
struct mat
{ll a[N][N];
};
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]=(res.a[i][j]+x.a[i][k]*y.a[k][j])%MOD;return res;
}
void mat_pow(ll n)
{mat c,res;c.a[0][0]=c.a[0][1]=c.a[1][0]=1;c.a[1][1]=0;memset(res.a,0,sizeof(res.a));for(int i=0;i<2;i++) res.a[i][i]=1;while(n){if(n&1) res=mat_mul(res,c);c=mat_mul(c,c);n=n>>1;}printf("%I64d\n",res.a[0][1]);
}
int main()
{ll n;scanf("%lld",&n);mat_pow(n);return 0;
}

转载于:https://www.cnblogs.com/aerer/p/9930934.html

矩阵快速幂及斐波那契数列模板相关推荐

  1. 矩阵快速幂求斐波那契数列(初学整理)

    参考文章: http://blog.csdn.net/u013795055/article/details/38599321 http://blog.csdn.net/g_congratulation ...

  2. A - 【深蓝】教科书般的亵渎 (Gym - 102072A )(矩阵快速幂+计算斐波那契数列)

    "现在给大家展示一波教科书般的亵渎" "扭了扭了" 炉石传说是一款比较火的卡牌游戏,不同的卡牌间可以打出许多不可思议的配合. 炉石传说的战斗大部分由随从来完成. ...

  3. 牛客18987 粉嘤花之恋(矩阵快速幂、斐波那契数列)

    链接:https://ac.nowcoder.com/acm/problem/18987 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  4. 矩阵快速幂及斐波那契数列

    1.通用模板:矩阵快速幂 前几天写过一篇矩阵快速幂的一种解法,但是当时只是初学,所以用了当时我更好理解的方法去做.那个解法需要调用两个很相像的函数,而且容易造成紊乱,也不利于矩阵快速幂的推广,所以在观 ...

  5. 2017.3.25 矩阵快速幂 求斐波那契数列第n项

    对于矩阵快速幂只要知道矩阵取模.乘法原理就完全可以手推 口诀:行 列         被计算的行列的交点是结果对应的位置: 剩下的就是推矩阵: 其实根据矩阵的方程意义就很好推了: 码: #includ ...

  6. 利用矩阵快速幂求斐波那契数列

    我们知道如果用记忆化搜索逐项递推可以将复杂度降低到O(n),但是对于更大规模的输入,这个算法效率还是不够高,那么我们考虑更高效的算法: 二阶递推:f(n+2)=(1 1) f(n+1) f(n+1) ...

  7. 快速幂求解斐波那契数列

    斐波那契数列 斐波那契数列是很经典也很简单的一条题目.其满足: F n = { 1 ( n ≤ 2 ) F n − 1 + F n − 2 ( n ≥ 3 ) F_{n}= \begin{cases} ...

  8. ZYH的斐波那契数列【线段树动态开点+矩阵快速幂求斐波那契】

    描述 ZYH最近研究数列研究得入迷啦! 现在有一个斐波拉契数列(f[1]=f[2]=1,对于n>2有f[n]=f[n-1]+f[n-2]), 但是斐波拉契数列太简单啦,于是ZYH把它改成了斐波拉 ...

  9. 加强版斐波那契数列(矩阵快速幂)

    关于快速幂的讲解可以参见我的上一篇博客<快速幂> 题目链接:又见斐波那契 题目描述 这是一个加强版的斐波那契数列. 给定递推式 求F(n)的值,由于这个值可能太大,请对10 9+7取模. ...

最新文章

  1. WMI技术介绍和应用——查询磁盘分区和逻辑磁盘信息
  2. bios模拟器_比游戏模拟器罕见一百倍!99%的人没见过!真实用!
  3. 华为智能手表与鸿蒙,不再是大号手环!华为鸿蒙手表来了:要和苹果抢生态?...
  4. 《Python Cookbook 3rd》笔记(1.20):合并多个字典或映射
  5. DevSecOps简介(二)
  6. 联想Y470为什么安装不上CentOS7 x86_64的系统?
  7. OpenShift 4 Tekton (5) - Task/Pipeline/Workspace/PipelineResource
  8. CCAI 2017 | 专访德国语言技术领军者 Hans Uszkoreit:深度学习还不足以解决 NLP 核心问题...
  9. php mess,Mess.php
  10. 如何在CSDN中免费下载资料
  11. 基于 HTML5 Canvas 的 3D 热力云图效果
  12. 二元logistic模型案例_二元Logistic模型(上)
  13. Win10:修改电脑桌面路径
  14. B站顶流何同学对话苹果CEO库克,iPhone某些设计想法源自中国
  15. 苹果app签名TF签名如何下载安装?
  16. 【Python】Wordcloud 词云
  17. 在Ubuntu 18.04上用源码安装GVM 20.08
  18. 检查App是否有在后台启动前台服务的行为命令
  19. 【枚举算法】枚举法概念
  20. 夏天晚上睡觉点蚊香对身体有害?+几招防蚊、驱蚊办法

热门文章

  1. DPDK+Pktgen 高速发包测试
  2. 20155320《网络对抗》Exp4 恶意代码分析
  3. 通过Xshell登录远程服务器实时查看log日志
  4. 《JavaScript DOM编程艺术》笔记
  5. ASP.NET MVC下的四种验证编程方式[续篇]
  6. HttpClient 学习整理(转)
  7. 几张图可以理解GC JVM调优的内容
  8. Hadoop0.20.2版本在Ubuntu下安装和配置
  9. dede 5.7 任意用户重置密码前台
  10. Java这些多线程基础知识你会吗?