设为首页 加入收藏

TOP

hdu 4990 Reading comprehension
2015-07-20 17:42:05 来源: 作者: 【 】 浏览:1
Tags:hdu 4990 Reading comprehension

?

思路:题目难点就是找矩阵。。。。。

?

code:

?

#include
  
   
#include
   
     #include
    
      using namespace std; typedef long long LL; struct Matrix { LL x[5][5]; friend Matrix operator*(Matrix &a,Matrix &b); friend Matrix operator*(Matrix a,LL k); }; int n,mod; Matrix operator*(Matrix &a,Matrix &b) { Matrix c; int i,j,k; for(i=1;i<=3;i++) { for(j=1;j<=3;j++) { c.x[i][j]=0; for(k=1;k<=3;k++) { c.x[i][j]=(c.x[i][j]+(a.x[i][k]*b.x[k][j])%mod)%mod; } } } return c; } Matrix operator^(Matrix a,LL k) { Matrix unit; memset(unit.x,0,sizeof(unit.x)); for(int i=0;i<=3;i++) { unit.x[i][i]=1; } while(k>0) { if(k&1) unit=unit*a; a=a*a; k=k/2; //printf(AAAAA ); } return unit; } Matrix A,B; int main() { while(scanf(%d%d,&n,&mod)==2) { memset(A.x,0,sizeof(A.x)); A.x[1][2]=2,A.x[2][1]=1,A.x[2][2]=1; A.x[3][2]=A.x[3][3]=1; B.x[1][1]=1%mod; B.x[1][2]=2%mod; B.x[1][3]=1; if(n==1) printf(%lld ,B.x[1][1]); else if(n==2) { printf(%lld ,B.x[1][2]); } else { A=A^(n-2); B=B*A; printf(%lld ,B.x[1][2]%mod); } } return 0; } 
    
   
  


?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu 2577 How to Type 如何保证英.. 下一篇BZOJ 1064 NOI2008 假面舞会 DFS

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·工业机器人TCP校准中 (2025-12-25 05:19:17)
·opc 通讯协议与 TCP (2025-12-25 05:19:15)
·labview中tcp/ip通信 (2025-12-25 05:19:13)
·新书介绍《Python数 (2025-12-25 04:49:47)
·怎么利用 Python 进 (2025-12-25 04:49:45)