hdu 1757 A Simple Math Problem(矩阵乘法)
2012-09-11 21:51
525 查看
题目分析:由题意可构造矩阵matrix[10][10],maze[1][1]=a0,maze[2][1]=a1,,,maze[10][1]=a9,,,,maze[1][2]=maze[2][3]=
,,,maze[9][10]=1,其余全为10.
则k>10时,maze[10][10]^(k-9), ans=9*maze[1][1],,,,+0*maze[10][1],,,,
代码:
,,,maze[9][10]=1,其余全为10.
则k>10时,maze[10][10]^(k-9), ans=9*maze[1][1],,,,+0*maze[10][1],,,,
代码:
#include<iostream> #include<cstdio> #include<memory.h> using namespace std; struct node { int matrix[11][11]; }maze; int k,m; node operator * (node x,node y) { node temp; for(int i=1;i<=10;i++) for(int j=1;j<=10;j++) { int t=0; for(int k=1;k<=10;k++) t+=(x.matrix[i][k]*y.matrix[k][j])%m; temp.matrix[i][j]=(t%m); } return temp; } node fun(node b,int k) { node a; if(k==0) { memset(a.matrix,0,sizeof(a.matrix)); for(int i=1;i<=10;i++) a.matrix[i][i]=1; return a; } if(k==1) { return b; } a=fun(b,k/2); if(k%2==1) { return a*a*b; } else return a*a; } int main() { while(scanf("%d %d",&k,&m)!=EOF) { int x; memset(maze.matrix,0,sizeof(maze.matrix)); for(int i=1;i<=10;i++) { scanf("%d",&x); maze.matrix[i][1]=x; } for(int i=1;i<=9;i++) maze.matrix[i][i+1]=1; int ans=0; if(k<=9) ans=k%m; else { node a=fun(maze,k-9); for(int i=1;i<=10;i++) ans+=a.matrix[i][1]*(10-i); ans%=m; } printf("%d\n",ans); } return 0; }
相关文章推荐
- hdu 1757 A Simple Math Problem(矩阵快速幂乘法)
- HDU-1757--A Simple Math Problem(矩阵乘法)
- hdu 1757 A Simple Math Problem (乘法矩阵)
- hdu 1757 A Simple Math Problem 矩阵乘法解线性方程
- hdu 1757 A Simple Math Problem(矩阵乘法)
- 【矩阵乘法】hdu hdoj 1757 A Simple Math Problem
- hdu 1757 A Simple Math Problem 矩阵快速幂
- hdu A Simple Math Problem 1757 矩阵的构造和快速幂
- HDU 1757 A Simple Math Problem(矩阵快速幂)
- hdu 1757 A Simple Math Problem【矩阵快速幂】
- HDU 1757 A Simple Math Problem (矩阵快速幂模板)
- hdu 1757 A Simple Math Problem(矩阵快速幂)
- HDU 1757 A Simple Math Problem(矩阵快速幂模板)
- HDU - problem 1757 A Simple Math Problem【矩阵 + 快速幂】
- HDU 1757 A Simple Math Problem(矩阵快速幂)
- HDU 1757-A Simple Math Problem(矩阵快速幂)
- HDU 1757 A Simple Math Problem 矩阵快速幂
- hdu 1757 A Simple Math Problem_矩阵快速幂
- HDU 1757 A Simple Math Problem 简单矩阵快速幂
- HDU 1757 A Simple Math Problem (矩阵快速幂)