矩阵快速幂
来源:互联网 发布:华天软件科技有限公司 编辑:程序博客网 时间:2024/06/03 22:04
题目描述
a[1]=a[2]=a[3]=1
a[x]=a[x-3]+a[x-1] (x>3)
求a数列的第n项对1000000007(10^9+7)取余的值。
Code
// by spli#include<cstring>#include<cstdio>#include<algorithm>#include<iostream>#define LL long longusing namespace std;const int p=1e9+7;int T,n;struct Matrix{ LL a[5][5]; Matrix operator * (const Matrix &b)const{ Matrix ret; for(int i=1;i<=3;++i) for(int j=1;j<=3;++j){ ret.a[i][j]=0; for(int k=1;k<=3;++k) (ret.a[i][j]+=a[i][k]*b.a[k][j])%=p; } return ret; }}pre,ans;Matrix exp(Matrix a,int b){ Matrix ret=a,k=a; b--; while(b){ if(b&1) ret=ret*k; b>>=1; k=k*k; } return ret;}int main(){ scanf("%d",&T); pre.a[1][1]=1; pre.a[1][2]=1; pre.a[1][3]=0; pre.a[2][1]=0; pre.a[2][2]=0; pre.a[2][3]=1; pre.a[3][1]=1; pre.a[3][2]=0; pre.a[3][3]=0; while(T--){ scanf("%d",&n); if(n<=3) puts("1"); else{ ans.a[1][1]=1; ans.a[1][2]=1; ans.a[1][3]=1; ans=ans*exp(pre,n-3); printf("%lld\n",ans.a[1][1]%p); } } return 0;}
阅读全文
0 0
- 快速矩阵快速幂
- 转移矩阵+矩阵快速幂
- 矩阵乘法 矩阵快速幂
- 构造矩阵+矩阵快速幂
- 矩阵快速幂,矩阵加法,矩阵乘法
- 快速幂||矩阵快速幂
- 快速幂&矩阵快速幂
- 快速幂,矩阵快速幂
- 快速幂 矩阵快速幂
- 快速幂&矩阵快速幂
- 【快速幂】【矩阵快速幂】
- 快速幂和快速矩阵
- poj3070--矩阵 快速幂
- POJ3233矩阵快速幂
- poj3070Fibonacci 矩阵快速幂
- 矩阵的快速幂
- 矩阵快速幂
- 矩阵的快速幂
- 初识JavaScript依赖注入
- 树莓派更换软件源
- 20171102
- Python高阶函数及匿名函数
- 英版树莓派中文环境和中文输入法的配置
- 矩阵快速幂
- CCF认证 201509-2:日期计算
- ES6作用域和解构赋值
- 树莓派使用owncloud或者nextcloud建立私有云
- 任意阶幻方
- java中为什么byte的取值范围是-128到+127
- K近邻法(KNN)原理小结
- Luogu 3942 :乱搞?
- PID学习笔记