zoukankan      html  css  js  c++  java
  • HDU-1575-Tr A(矩阵快速幂模板)

    Problem Description 

    A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973。

    Input
    数据的第一行是一个T,表示有T组数据。
    每组数据的第一行有n(2 <= n <= 10)和k(2 <= k < 10^9)两个数据。接下来有n行,每行有n个数据,每个数据的范围是[0,9],表示方阵A的内容。

    Output
    对应每组数据,输出Tr(A^k)%9973。

    Sample Input

    2
    2 2
    1 0
    0 1
    3 99999999
    1 2 3
    4 5 6
    7 8 9

    Sample Output

    2
    2686


    思路:矩阵快速幂裸题。


     1 #include<iostream>
     2 #include<cstring>
     3 #define mod 9973
     4 using namespace std;
     5 int n;
     6 
     7 struct mat{
     8     int a[15][15];
     9 };
    10 
    11 mat mult(mat x,mat y){
    12     mat ans;
    13     memset(ans.a,0,sizeof(ans.a));
    14     for(int i=0;i<n;i++)
    15     for(int j=0;j<n;j++)
    16     for(int k=0;k<n;k++){
    17         ans.a[i][j]+=x.a[i][k]*y.a[k][j]; 
    18         ans.a[i][j]%=mod;
    19     }
    20     
    21     return ans;
    22 }
    23 
    24 mat qm(mat a,long long b){
    25     mat I;
    26     memset(I.a,0,sizeof(I.a));
    27     for(int i=0;i<n;i++)
    28         I.a[i][i]=1;
    29     while(b){
    30         if(b&1) I=mult(I,a);
    31         b=b>>1;
    32         a=mult(a,a);
    33     }
    34     return I;
    35 }
    36 
    37 int main(){
    38     int T,k;
    39     mat A;
    40     cin>>T;
    41     while(T--){
    42         cin>>n>>k;
    43         for(int i=0;i<n;i++)
    44         for(int j=0;j<n;j++)
    45             cin>>A.a[i][j];
    46     
    47         A=qm(A,k);
    48         int ans=0;    
    49         for(int i=0;i<n;i++)
    50               ans+=A.a[i][i];
    51         cout<<ans%mod<<endl;               
    52     }    
    53     return 0;
    54 } 

  • 相关阅读:
    小菜鸟学 MQ(三)
    小菜鸟 学MQ(二)
    小菜鸟学 MQ(一)
    CXF 自定义拦截器
    WebService 入门程序(一)
    查找满足条件的颜色并替换
    jsfl 巧用获取jsfl绝对路径,导入配置文件,注意配置文件无法改变舞台宽高
    jsfl 发布保存关闭
    jsfl 改变舞台宽高
    AS3 在不规则区域内拖动
  • 原文地址:https://www.cnblogs.com/yzhhh/p/10048953.html
Copyright © 2011-2022 走看看