zoukankan      html  css  js  c++  java
  • 矩阵乘法

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <cmath>
     4 #include <cstdlib>
     5 #include <algorithm>
     6 #include <string>
     7 #include <iostream>
     8 #include <stack>
     9 #include <map>
    10 #include <queue>
    11 using namespace std;
    12 #define N 15
    13 #define INF 0x3f3f3f3f
    14 #define MOD 9973
    15 int n;
    16 
    17 struct Mat
    18 {
    19     int mat[N][N];
    20     void init()
    21     {
    22         memset(mat, 0, sizeof(mat));
    23     }
    24     void E()
    25     {
    26         memset(mat, 0, sizeof(mat)); //构造单位矩阵
    27         for(int i = 0; i < n; i++)
    28             mat[i][i] = 1;
    29     }
    30 };
    31 
    32 Mat operator * (Mat a, Mat b) //矩阵乘法
    33 {
    34     Mat c;
    35     c.init();
    36     for(int i = 0; i < n; i++) { //第一个矩阵的行数
    37         for(int j = 0; j < n; j++) { //第二个矩阵的列数
    38             for(int k = 0; k < n; k++) { //第一个矩阵的列数
    39                 c.mat[i][j] = c.mat[i][j] + a.mat[i][k] * b.mat[k][j] % MOD;
    40                 c.mat[i][j] %= MOD; //要加上这句话
    41             }
    42         }
    43     }
    44     return c;
    45 }
    46 
    47 Mat operator ^ (Mat a, int k) //矩阵快速幂
    48 {
    49     Mat p, tmp = a;
    50     p.E();
    51     while(k) {
    52         if(k & 1) p = p * tmp;
    53         tmp = tmp * tmp;
    54         k >>= 1;
    55     }
    56     return p;
    57 }
    58 
    59 int main()
    60 {
    61     int t;
    62     scanf("%d", &t);
    63     while(t--) {
    64         Mat a;
    65         int k;
    66         scanf("%d%d", &n, &k);
    67         for(int i = 0; i < n; i++)
    68             for(int j = 0; j < n; j++)
    69                 scanf("%d", &a.mat[i][j]);
    70         Mat ans = a ^ k;
    71         int sum = 0;
    72         for(int i = 0; i < n; i++) {
    73             sum = sum + ans.mat[i][i] % MOD;
    74         }
    75         printf("%d
    ", sum % MOD);
    76     }
    77     return 0;
    78 }
  • 相关阅读:
    Mondriaan's Dream POJ
    H
    Superdoku Kattis
    Corn Fields POJ
    旅行的意义 Gym
    G
    J
    Welcome Party ZOJ
    redis入门到精通系列(三):key的通用操作和redis内部db的通用操作
    redis入门到精通系列(二):redis操作的两个实践案例
  • 原文地址:https://www.cnblogs.com/fightfordream/p/5939875.html
Copyright © 2011-2022 走看看