zoukankan      html  css  js  c++  java
  • hdu 1575 Tr A (二分矩阵)

    Tr A

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 2449    Accepted Submission(s): 1819


    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
     
    Author
    xhd
     
    Source
     
    Recommend
    linle   |   We have carefully selected several similar problems for you:  1757 1588 2256 2254 3117 
     
     1 //0MS    212K    969 B    G++
     2 /*
     3 
     4     第一次 做矩阵的题.有点渣,不过这题是水题。 
     5 
     6 */
     7 #include<stdio.h>
     8 #include<string.h>
     9 #define N 9973
    10 struct matrix{
    11     int g[15][15];
    12 }temp,ans;
    13 int n;
    14 matrix mutil(matrix a,matrix b)
    15 {
    16     matrix c;
    17     for(int i=0;i<n;i++)
    18         for(int j=0;j<n;j++){
    19             c.g[i][j]=0;
    20             for(int k=0;k<n;k++){
    21                 c.g[i][j]+=a.g[i][k]*b.g[k][j]; 
    22                 c.g[i][j]%=N;
    23             }
    24         }
    25     return c;
    26 }
    27 void solve(int k)
    28 {
    29     while(k){
    30         if(k&1) ans=mutil(temp,ans);
    31         temp=mutil(temp,temp);
    32         k/=2;
    33     }
    34     int sum=0;
    35     for(int i=0;i<n;i++){
    36         sum+=ans.g[i][i];
    37         sum%=N;
    38     }
    39     printf("%d
    ",sum);
    40 }
    41 int main(void)
    42 {
    43     int t,k;
    44     scanf("%d",&t);
    45     while(t--)
    46     {
    47         scanf("%d%d",&n,&k);
    48         for(int i=0;i<n;i++)
    49             for(int j=0;j<n;j++){
    50                 ans.g[i][j]=(i==j);
    51                 scanf("%d",&temp.g[i][j]);
    52             }
    53         solve(k);
    54     }
    55     return 0;
    56 } 
  • 相关阅读:
    不务正业系列-浅谈《过气堡垒》,一个RTS玩家的视角
    [LeetCode] 54. Spiral Matrix
    [LeetCode] 40. Combination Sum II
    138. Copy List with Random Pointer
    310. Minimum Height Trees
    4. Median of Two Sorted Arrays
    153. Find Minimum in Rotated Sorted Array
    33. Search in Rotated Sorted Array
    35. Search Insert Position
    278. First Bad Version
  • 原文地址:https://www.cnblogs.com/GO-NO-1/p/3655138.html
Copyright © 2011-2022 走看看