#include<bits/stdc++.h>
using namespace std;
#define mod(x) ((x)%9973)
#define LL long long
#define MXN 15
int n, k;
struct mat{
int d[MXN][MXN]; // 矩阵数据
mat operator*(const mat m){ // 定义矩阵乘法
mat ret;
int tmp;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
tmp = 0;
for(int k = 1; k <= n; k++){
tmp = mod(tmp + d[i][k]*m.d[k][j]);
}
ret.d[i][j] = tmp;
}
}
return ret;
}
void init_unit(){ // 初始化为单位矩阵
for(int i = 0; i <= n; i++)
for(int j = 0; j <= n; j++)
d[i][j] = i == j ? 1 : 0;
}
}a;
mat fastPow(mat m, int pw){
mat res;
res.init_unit();
while(pw){
if(pw & 1) res = res * m;
m = m * m;
pw >>= 1;
}
return res;
}
int main(){
int T;
scanf("%d", &T);
while(T--){
scanf("%d %d", &n, &k);
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
scanf("%d", &a.d[i][j]);
}
}
a = fastPow(a, k);
int ans = 0;
for(int i = 1; i <= n; i++) ans = mod(ans+a.d[i][i]);
printf("%d\n", ans);
}
return 0;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交