zoukankan      html  css  js  c++  java
  • 第十场 hdu 6172 Array Challenge(矩阵快速幂)

    http://acm.hdu.edu.cn/showproblem.php?pid=6172

    题目大意:按照给出的公式算出an

    解题思路:an=4an-1+17an-2-12an-3,不要问我为什么,我也不知道(¬_¬)

    AC代码:

     1 #include <iostream>
     2 #include<bits/stdc++.h>
     3 //if(~i)//当i不是-1时满足条件
     4 using namespace std;
     5 const int SMod=1e9+7;
     6 struct Matrix
     7 {
     8     long long m[4][4];
     9 };
    10 Matrix Mul(Matrix a,Matrix b)
    11 {
    12     Matrix c;
    13     memset(c.m,0,sizeof(c.m));
    14     for(int i=0;i<4;i++)
    15         for(int j=0;j<4;j++)
    16             for(int k=0;k<4;k++)
    17                 c.m[i][j]+=((a.m[i][k]*b.m[k][j])%SMod+SMod)%SMod;
    18     return c;
    19 }
    20 
    21 Matrix fastm(Matrix a,long long n)
    22 {
    23     Matrix res;
    24     memset(res.m,0,sizeof(res.m));
    25     for(int i=0;i<4;i++)
    26     res.m[i][i]=1;
    27     while(n)
    28     {
    29         if(n&1)
    30         res=Mul(res,a);
    31         n>>=1;
    32         a=Mul(a,a);
    33     }
    34     return res;
    35 }
    36 int main()
    37 {
    38     Matrix a,ans;
    39     memset(a.m,0,sizeof(a.m));
    40     a.m[0][0]=4,a.m[0][1]=17,a.m[0][2]=-12;
    41     a.m[1][0]=1,a.m[2][1]=1;
    42     long long t,n;
    43     scanf("%lld",&t);
    44     while(t--)
    45     {
    46         scanf("%lld",&n);
    47         if(n==2) printf("31
    ");
    48         else if(n==3) printf("197
    ");
    49         else if(n==4) printf("1255
    ");
    50         else
    51         {
    52             ans=fastm(a,n-4);
    53             printf("%lld
    ",(ans.m[0][0]*1255%SMod+SMod+ans.m[0][1]*197%SMod+SMod+ans.m[0][2]*31%SMod+SMod)%SMod);
    54         }
    55     }
    56     return 0;
    57 }
    View Code

    ]

  • 相关阅读:
    DNS隧道
    记录上锁(fcntl)
    posix对线程的调整
    MySQL创建存储过程
    MySQL的WHERE语句中BETWEEN与IN的用法和他们的区别
    mysql中distinct
    线程的工作方式-流水线
    可执行程序的生成过程
    线程高级编程
    time函数及其用法
  • 原文地址:https://www.cnblogs.com/wang-ya-wei/p/7436339.html
Copyright © 2011-2022 走看看