nyoj 301 递推求值(矩阵快速幂)
来源:互联网 发布:淘宝虚拟店铺赚钱吗 编辑:程序博客网 时间:2024/04/29 17:40
递推求值
ps:矩阵快速幂的入门题
思路:
先构造两个矩阵,其中一个为矩阵A,作为初始矩阵
f2 f1 1
0 0 0
0 0 0
另一个为矩阵B
b 1 0
a 0 0
c 0 1
因为F(2)和F(1)是已知的,当n>=3时,每次都乘以矩阵B,就能推出下一个矩阵。而矩阵的第一行第一列的元素就是所求的结果。
代码:
#include<stdio.h>#include<string.h>#define N 3#define mod 1000007#define mem(a,b) memset(a,b,sizeof(a))typedef long long LL;struct Matrix{ LL mat[N][N];};Matrix unit_matrix={ 1,0,0, 0,1,0, 0,0,1};//单位矩阵Matrix mul(Matrix a,Matrix b)//矩阵相乘{ Matrix res; for(int i=0; i<N; ++i) for(int j=0; j<N; ++j) { res.mat[i][j]=0; for(int k=0; k<N; ++k) res.mat[i][j]=(res.mat[i][j]+a.mat[i][k]*b.mat[k][j])%mod; } return res;}Matrix pow_matrix(Matrix a,LL n)//矩阵快速幂{ Matrix res=unit_matrix; while(n) { if(n&1) res=mul(res,a); a=mul(a,a); n>>=1; } return res;}int main(){ LL t,f1,f2,a,b,c,n; Matrix tmp,arr; scanf("%lld",&t); while(t--) { scanf("%lld%lld%lld%lld%lld%lld",&f1,&f2,&a,&b,&c,&n); if(n==1) printf("%lld\n",(f1+mod)%mod); else if(n==2) printf("%lld\n",(f2+mod)%mod); else { mem(arr.mat,0); mem(tmp.mat,0); arr.mat[0][0]=f2,arr.mat[0][1]=f1,arr.mat[0][2]=1;//构造初始矩阵 tmp.mat[0][0]=b,tmp.mat[1][0]=a,tmp.mat[2][0]=c; tmp.mat[0][1]=tmp.mat[2][2]=1; Matrix p=pow_matrix(tmp,n-2); p=mul(arr,p);//注意p和arr不要写反了 LL ans=(p.mat[0][0]+mod)%mod; printf("%lld\n",ans); } } return 0;}
1 0
- NYOJ 301 递推求值(矩阵快速幂)
- nyoj 301 递推求值(矩阵快速幂)
- NYOJ - 301 - 递推求值 ( 递推+矩阵快速幂 )
- nyoj 301递推求值 (矩阵+快速幂)
- nyoj--301 递推求值(矩阵快速幂)
- NYOJ 301 递推求值【矩阵快速幂】
- nyoj 301 递推求值 矩阵快速幂
- NYOJ 301 递推求值【矩阵快速幂】
- 【矩阵快速幂*模板】nyoj 301 递推求值
- nyoj 301递推求值(矩阵快速幂的递推求值)
- nyoj 301 递推求值 矩阵幂
- NYOJ——301递推求值(矩阵快速幂)
- NYOJ 301 递推求值【矩阵快速幂取模】
- nyist 301 递推求值(矩阵快速幂)
- 矩阵快速幂 - hduoj 5667 Sequence -nyoj 301 递推求值
- nyoj 301 递推求值【常数矩阵】
- NYOJ-301 递推求值【矩阵二分幂】
- nyoj 301 递推求值(矩阵计算)
- 大数据IMF传奇行动绝密课程第93课:SparkStreaming updateStateByKey案例实战和内置源码解密
- 【SSH网上商城项目实战28】使用Ajax技术局部更新商品数量和总价
- Unity3D优化技巧系列七
- bzoj4806: 炮
- Throwable类详解
- nyoj 301 递推求值(矩阵快速幂)
- 【BZOJ 4491】我也不知道题目名字是什么【差分+线段树维护】
- CCD的驱动程序
- 【SSH网上商城项目实战29】使用JsChart技术在后台显示商品销售报表
- Border Layout
- node.js学习(二十二、mongodb安装)
- Unity Shader
- VTK图像处理之图像数据结构
- c++ string的运用