hdu 5015 233 Matrix (递推 矩阵快速幂)
2014-10-30 22:15
465 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5015
题意:题目说的很清楚了。
思路:
感觉这道题目如果对矩阵快速幂比较敏感的话,稍微想一下就能构造出来这个矩阵,唯一比较麻烦的就是那个233,为此我们在矩阵中多加了两维来专门计算这个233。
以5为例构造矩阵如下:
最后用快速幂加速一下就好了。
code:
题意:题目说的很清楚了。
思路:
感觉这道题目如果对矩阵快速幂比较敏感的话,稍微想一下就能构造出来这个矩阵,唯一比较麻烦的就是那个233,为此我们在矩阵中多加了两维来专门计算这个233。
以5为例构造矩阵如下:
最后用快速幂加速一下就好了。
code:
#include <cstdio> #include <cstdlib> #include <iostream> #include <vector> #define INF 10000005000 using namespace std; typedef long long LL; typedef vector<LL> vec; typedef vector<vec> mat; const LL mo=10000007; const int maxn=20; int a[maxn]; mat mul(mat &A,mat &B) { mat C(A.size(),vec(B[0].size())); for(int i=0;i<A.size();i++){ for(int k=0;k<B.size();k++){ for(int j=0;j<B[0].size();j++){ C[i][j]=(C[i][j]+A[i][k]*B[k][j])%mo; } } } return C; } mat pow(mat A,LL n) { mat B(A.size(),vec(A.size())); for(int i=0;i<A.size();i++){ B[i][i]=1; } while(n>0){ if(n&1) B=mul(B,A); A=mul(A,A); n>>=1; } return B; } int main() { int N,M; while(scanf("%d%d",&N,&M)!=EOF){ for(int i=0;i<N;i++){scanf("%I64d",&a[i]);} mat A(N+2,vec(N+2)); mat B(N+2,vec(1)); A[0][0]=1; for(int i=1;i<N+2;i++) A[0][i]=0; for(int i=1;i<N+2;i++){ A[i][0]=1; A[i][1]=10; for(int j=2;j<=i;j++) A[i][j]=1; for(int j=i+1;j<N+2;j++) A[i][j]=0; } A=pow(A,M); B[0][0]=3; B[1][0]=23; for(int i=0;i<N;i++) B[i+2][0]=a[i]; B=mul(A,B); printf("%I64d\n",B[N+1][0]); } return 0; }
相关文章推荐
- HDU 5015 233 Matrix (数论——矩阵快速幂)
- hdu 5015 233 Matrix 矩阵快速幂
- hdu 5015 233 Matrix(矩阵快速幂)
- hdu 5015 233 Matrix(矩阵快速幂)
- HDU 5015 233 Matrix(矩阵快速幂)
- HDU 5015 233 Matrix(矩阵快速幂)
- HDU 5015 233 Matrix 矩阵递推
- HDU 5015-233 Matrix-矩阵快速幂
- HDU 5015 233 Matrix (矩阵快速幂)
- hdu 5015 233 Matrix 矩阵快速幂 2014 ACM/ICPC Asia Regional Xi'an Online
- HDU 5015 233 Matrix --矩阵快速幂
- hdu 5015 233 Matrix 2014 ACM/ICPC Asia Regional Xi'an Online 矩阵快速幂
- HDU 5015 233 Matrix(网络赛1009) 矩阵快速幂
- hdu 5015 233 Matrix (矩阵快速幂)
- hdu 5015 233 Matrix (矩阵快速幂)
- hdu 5015 233 Matrix 矩阵快速幂
- HDU 5015 233 Matrix(矩阵快速幂)
- HDU 5015 233 Matrix 矩阵快速幂
- hdu 5015 Matrix 233 矩阵快速幂
- HDU 5015 233 Matrix(矩阵快速幂)