HDU-5950-Recursive sequence-矩阵快速幂
2016-10-31 21:30
519 查看
题目链接
题意:给出
F[1]和F[2],F[i]=F[i−1]+F[i−2]∗2+i4
求F
思路:明显的构造矩形快速幂,将n^4展开就好了
#include<bits/stdc++.h> const long long mod = 2147493647; using namespace std; struct mat { long long a[10][10]; }ans,tt; mat mul(mat x,mat y) { mat tt; for(int i=1;i<=7;i++) for(int j=1;j<=7;j++) { tt.a[i][j]=0; for(int k=1;k<=7;k++) { tt.a[i][j]+=x.a[i][k]*y.a[k][j]; tt.a[i][j]%=mod; } } return tt; } int main() { int t; long long a,b,n; scanf("%d",&t); while(t--) { scanf("%lld%lld%lld",&n,&a,&b); if(n==1) { printf("%lld\n",a); continue; } if(n==2) { printf("%lld\n",b); continue; } memset(ans.a,0,sizeof ans.a); memset(tt.a,0,sizeof tt.a); for(int i=1;i<=7;i++) { ans.a[i][i]=1; } tt.a[1][1]=1;tt.a[1][2]=2;tt.a[1][3]=1;tt.a[1][4]=4;tt.a[1][5]=6;tt.a[1][6]=4;tt.a[1][7]=1; tt.a[2][1]=1; tt.a[3][3]=1;tt.a[3][4]=4;tt.a[3][5]=6;tt.a[3][6]=4;tt.a[3][7]=1; tt.a[4][4]=1;tt.a[4][5]=3;tt.a[4][6]=3;tt.a[4][7]=1; tt.a[5][5]=1;tt.a[5][6]=2;tt.a[5][7]=1; tt.a[6][6]=1;tt.a[6][7]=1; tt.a[7][7]=1; n-=2; while(n) { if(n&1LL) { ans=mul(ans,tt); } tt=mul(tt,tt); n/=2; } long long tot=(ans.a[1][1]*b%mod+ans.a[1][2]*a%mod+ans.a[1][3]*16%mod+ans.a[1][4]*8%mod +ans.a[1][5]*4%mod+ans.a[1][6]*2%mod+ans.a[1][7])%mod; printf("%lld\n",tot); } return 0; }
相关文章推荐
- 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(矩阵快速幂)
- 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(矩阵快速幂,经典矩阵构造方法)
- HDU 5950 Recursive sequence(矩阵快速幂)
- HDU - 5950 Recursive sequence 矩阵快速幂(由公式推矩阵快速幂简单讲解)
- hdu 5950 Recursive sequence(矩阵快速幂,构造)
- HDU 5950 Recursive sequence(矩阵构造+矩阵快速幂)
- HDU-5950 Recursive sequence(矩阵乘法)