[矩阵快速幂]HDU 5950 Recursive sequence
来源:互联网 发布:轩辕网络上市 编辑:程序博客网 时间:2024/05/22 11:03
题意:f(n)=2f(n-2)+f(n-1)+n^4,已知f(1),f(2)求f(n)%modn4也需要参与矩阵计算中,构造递推关系即可。递推公式如下:(n+1)^4=n^4+4n^3+6n^2+4n+1;(n+1)^3=n^3+3n^2+3n+1;(n+1)^2=n^2+2n+1;(n+1)^1=n+1;(n+1)0=1;
假设最右矩阵为[f(n-1),f(n-2),n^4,n^3,n^2,n,1]T,构造正确的求[f(n),f(n-1),(n+1)^4,(n+1)^3,(n+1)^2,(n+1),1]T的矩阵就没什么难度了。const int siz=7;int N=7;Mytype mod=2147493647;struct matrix { Mytype a[siz][siz]; matrix operator*(const matrix &y)const { matrix res; mem(res.a,0); for(int i=0;i<N;i++) for(int j=0;j<N;j++) if(a[i][j]) for(int k=0;k<N;k++) res.a[i][k]+=a[i][j]*y.a[j][k],res.a[i][k]%=mod; return res; } matrix operator+(const matrix &y)const { matrix res; for(int i=0;i<N;i++) for(int j=0;j<N;j++) res.a[i][j]=a[i][j]+y.a[i][j],res.a[i][j]%=mod; return res; } matrix operator*=(const matrix &y) { *this=y* *this; return *this; }};matrix qmod(matrix a,int k){ matrix res; mem(res.a,0); for(int i=0;i<N;i++) res.a[i][i]=1; while(k) { if(k&1) res*=a; a*=a; k>>=1; } return res;}int main(){ matrix a; mem(a.a,0); a.a[0][0]=1,a.a[0][1]=2,a.a[0][2]=1; a.a[1][0]=1; a.a[2][2]=1,a.a[2][3]=4,a.a[2][4]=6,a.a[2][5]=4,a.a[2][6]=1; a.a[3][3]=1,a.a[3][4]=3,a.a[3][5]=3,a.a[3][6]=1; a.a[4][4]=1,a.a[4][5]=2,a.a[4][6]=1; a.a[5][5]=1,a.a[5][6]=1; a.a[6][6]=1; T_T{ int n; ll f1,f2; scanf("%d%lld%lld",&n,&f1,&f2); f1%=mod; f2%=mod; if(n==1){ OT(f1),pe(); continue; } else if(n==2){ OT(f2),pe(); continue; } matrix b=qmod(a,n-2); ll t[]={f2,f1,81,27,9,3,1}; ll ans=0; for(int i=0;i<7;i++) ans=(ans+t[i]*b.a[0][i]%mod)%mod; OT(ans),pe(); } return 0;}
阅读全文
0 0
- [hdu 5950 Recursive sequence] 矩阵快速幂
- HDU-5950-Recursive sequence-矩阵快速幂
- HDU 5950 Recursive sequence 矩阵快速幂
- [矩阵快速幂]HDU 5950 Recursive sequence
- HDU 5950 Recursive sequence(矩阵构造+矩阵快速幂)
- HDU 5950 Recursive sequence(矩阵快速幂)
- hdu 5950 Recursive sequence(矩阵快速幂,构造)
- HDU 5950 Recursive sequence(矩阵快速幂)
- Recursive sequence HDU --- 5950 【公式矩阵快速幂】
- HDU 5950 Recursive sequence(矩阵快速幂)
- HDU 5950 Recursive sequence(矩阵快速幂)
- hdu 5950 Recursive sequence (矩阵快速幂)
- hdu 5950 Recursive sequence(递推 快速幂矩阵)
- hdu 5950 Recursive sequence(矩阵快速幂,经典矩阵构造方法)
- hdu 1590(Recursive sequence)矩阵快速幂
- 2016 沈阳 1003 Recursive sequence(hdu 5950)矩阵快速幂
- HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)
- ICPC 沈阳站C题 HDU 5950 Recursive sequence 矩阵快速幂 线性递推
- 输入框禁止输入特殊字符串,限制输入文字长度
- java关键字总结
- link和@import的区别
- 【golang 源码分析】内存分配与管理
- shell 脚本构建VOC数据集,以及data Augmentation
- [矩阵快速幂]HDU 5950 Recursive sequence
- JVM笔记整理(第3章)
- easygui安装的步骤
- Cocos2dx物理引擎(一)
- spring aop
- javaweb中使用百度、谷歌地图进行定位
- Android AS停留卡在building Gradle project
- 开发环境 生产环境 测试环境的基本理解和区别
- 搭建SSM框架:SpringMVC + Spring + MyBatis