[矩阵快速幂]HDU 5950 Recursive sequence
2017-07-07 09:50
489 查看
n4也需要参与矩阵计算中,构造递推关系即可。
递推公式如下:
(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; }
相关文章推荐
- [hdu 5950 Recursive sequence] 矩阵快速幂
- HDU 5950 Recursive sequence(矩阵快速幂)
- 2016 沈阳 1003 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 - 5950 - Recursive sequence 【巧妙构建矩阵快速幂】
- ICPC 沈阳站C题 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 矩阵快速幂(由公式推矩阵快速幂简单讲解)
- HDU 5950 Recursive sequence(矩阵快速幂)
- 5950 Recursive sequence (矩阵快速幂)
- hdu 1590(Recursive sequence)矩阵快速幂