1A,不解释,直接贴代码!
P.S.:此题代码可用作模板
#include <cstdio>
#include <cstdlib>
#include <cmath>
#define MOD 9973
#define M 16
typedef struct
{
int val[M][M];
}Matrix;
Matrix a, per;
int n;
void Init()
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
scanf("%d", &a.val[i][j]);
a.val[i][j] = a.val[i][j] % MOD;
per.val[i][j] = (i==j)?1:0;
}
}
}
Matrix Multi(Matrix x, Matrix y)
{
Matrix z;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
z.val[i][j] = 0;
for (int k = 0; k < n; k++)
{
z.val[i][j] = z.val[i][j] + (x.val[i][k] * y.val[k][j]) % MOD;
}
z.val[i][j] = z.val[i][j] % MOD;
}
}
return z;
}
int Power(int k)
{
Matrix c;
Matrix p = a;
Matrix res = per;
while (k)
{
if (k&1) res = Multi(res, p);
k = k/2;
p = Multi(p, p);
}
int sum = 0;
for (int i = 0; i < n; i++)
{
sum = (sum + res.val[i][i]) % MOD;
}
return sum;
}
int main()
{
int t, k;
scanf("%d", &t);
while (t--)
{
scanf("%d %d", &n, &k);
Init();
int ans = Power(k);
printf("%d\n", ans);
}
return 0;
}