设为首页 加入收藏

TOP

HDU 4686 Arc of Dream(矩阵快速幂)
2015-07-20 17:36:56 来源: 作者: 【 】 浏览:4
Tags:HDU 4686 Arc Dream 矩阵 快速

题目地址:HDU 4686

我去。。因为忘记把函数里的k定义成64位的,导致TLE了一晚上。。。晕。。

这题没什么技巧,就是根据公式构造就行。

代码如下:

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
           #include 
           
             #include 
            
              using namespace std; #define LL __int64 const LL mod=1e9+7; struct matrix { LL ma[8][8]; } init, res; matrix Mult(matrix x, matrix y) { int i, j, k; matrix tmp; memset(tmp.ma,0,sizeof(tmp.ma)); for(i=0; i<7; i++) { for(k=0; k<7; k++) { for(j=0; j<7; j++) { tmp.ma[i][j]=(tmp.ma[i][j]+x.ma[i][k]*y.ma[k][j])%mod; } } } return tmp; } matrix Pow(matrix x, LL k) { matrix tmp; int i, j; for(i=0; i<7; i++) for(j=0; j<7; j++) tmp.ma[i][j]=(i==j); while(k) { if(k&1) tmp=Mult(tmp,x); x=Mult(x,x); k>>=1; } return tmp; } int main() { LL k, ax, ay, bx, by, i, j, a0, b0; while(scanf("%I64d",&k)!=EOF) { scanf("%I64d%I64d%I64d%I64d%I64d%I64d",&a0,&ax,&ay,&b0,&bx,&by); if(k==0) { puts("0"); continue ; } memset(init.ma,0,sizeof(init.ma)); init.ma[0][0]=ax; init.ma[0][4]=1; init.ma[1][1]=bx; init.ma[1][5]=1; init.ma[2][0]=(ax*by)%mod;init.ma[2][1]=(ay*bx)%mod;init.ma[2][2]=(ax*bx)%mod;init.ma[2][3]=1; init.ma[3][3]=1; init.ma[4][4]=1; init.ma[5][5]=1; init.ma[6][0]=(ax*by)%mod;init.ma[6][1]=(ay*bx)%mod;init.ma[6][2]=(ax*bx)%mod;init.ma[6][3]=1;init.ma[6][6]=1; res=Pow(init,k-1); LL ans; ans=(a0*res.ma[6][0]+b0*res.ma[6][1]+a0*b0%mod*res.ma[6][2]+ay*by%mod*res.ma[6][3]+ay*res.ma[6][4]+by*res.ma[6][5]+a0*b0%mod*res.ma[6][6])%mod; printf("%I64d\n",ans); } return 0; } 
            
           
         
        
       
      
     
    
   
  



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu 5033 Building(斜率优化) 下一篇如何打印斐波拉契数列以及质数列表

评论

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

·PostgreSQL 索引 - (2025-12-25 22:20:43)
·MySQL Node.js 连接 (2025-12-25 22:20:41)
·SQL 撤销索引、表以 (2025-12-25 22:20:38)
·Linux系统简介 (2025-12-25 21:55:25)
·Linux安装MySQL过程 (2025-12-25 21:55:22)