fzu 1683 纪念SlingShot (矩阵优化递推,递推矩阵求和)
来源:互联网 发布:感染病毒源码 编辑:程序博客网 时间:2024/06/06 05:32
fzu 1683 纪念SlingShot
递推矩阵见此(图片来源)
#include<stdio.h>#include<string.h>#define MOD 2009struct matrix{ int m[4][4];};matrix multi(const matrix &a,const matrix &b){ matrix ans; memset(&ans,0,sizeof(ans)); for(int i=0;i<4;i++) for(int j=0;j<4;j++) for(int k=0;k<4;k++) { ans.m[i][j]+=a.m[i][k]*b.m[k][j]; ans.m[i][j]%=MOD; } return ans;}matrix pow(matrix a,int k){ matrix ans; memset(&ans,0,sizeof(ans)); for(int i=0;i<4;i++) ans.m[i][i]=1; while(k) { if(k&1) ans=multi(ans,a); a=multi(a,a); k>>=1; } return ans;}int main(){ int cas,k,n; matrix a; scanf("%d",&cas); for(k=1;k<=cas;k++) { scanf("%d",&n); if(n==0) printf("Case %d: 1\n",k); else if(n==1) printf("Case %d: 4\n",k); else if(n==2) printf("Case %d: 9\n",k); else { memset(&a,0,sizeof(a)); a.m[0][0]=a.m[0][1]=1; a.m[1][1]=3,a.m[1][2]=2,a.m[1][3]=7; a.m[2][1]=1; a.m[3][2]=1; a=pow(a,n-2); int ans=(a.m[0][0]*9%MOD+a.m[0][1]*28%MOD +a.m[0][2]*5%MOD+a.m[0][3]*3%MOD)%MOD; printf("Case %d: %d\n",k,ans); } } return 0;}
0 0
- fzu 1683 纪念SlingShot (矩阵优化递推,递推矩阵求和)
- fzu 1683 纪念SlingShot 矩阵
- FZU 1683 纪念SlingShot (构造矩阵)
- fzu 1683 纪念SlingShot(矩阵乘法)
- FZU 1683 纪念SlingShot(矩阵快速幂)
- FZu 1683 纪念SlingShot 矩阵快速幂
- FZU - 1683 纪念SlingShot 矩阵快速幂
- FZU oj 1683 纪念SlingShot(矩阵快速幂)
- fzu 1683 纪念SlingShot (矩阵快速幂)
- fzu 1683 纪念SlingShot(矩阵快速幂)
- FZU 1683纪念SlingShot (简单的矩阵快速幂)
- FZU 1683 纪念SlingShot
- FZU 1683 纪念SlingShot
- FZU 1683 纪念SlingShot
- FZU 1683 纪念SlingShot
- HDU1005 一类递推矩阵优化
- uva 10870 Recurrences(矩阵优化递推)
- 矩阵乘法递推的优化艺术
- 关于如何查询一个期刊是否被SCI或其他机构收录
- 在oracle 10g下,outline(存储大纲)与cursor_sharing参数的依赖关系
- 新疆青年强行闯治安点袭警夺枪 被击伤不治身亡
- CSS: dl,dt,dd,ul,li,ol区别及应用 .
- Objective-C实现常用的4种排序算法
- fzu 1683 纪念SlingShot (矩阵优化递推,递推矩阵求和)
- 在windows系统中安装hadoop
- 学习python的利器-ipython
- 设计模式之抽象工厂
- nginx调优
- linux 进程间通信
- Error:CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temp
- 音频编程大讨论
- xcode合并模拟器和真机静态库的编译