大概是快速幂有问题,但是查不出来啊,查了一个早上了,啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊。
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int Mod = 1e9 + 7;
const int N = 114;
int n,b;
struct Drind{
int a[N][N];
};
Drind operator * (Drind x,Drind y){
Drind z;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
for (int l=1;l<=n;l++)
z.a[i][j] = (z.a[i][j] + x.a[i][l] * y.a[l][j] % Mod) % Mod;
for (int i=1;i<=n;puts(""),i++)
return z;
}
Drind a,k;
signed main()
{
scanf("%lld%lld",&n,&b);
for (int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%lld",&a.a[i][j]);
memset(k.a,0,sizeof(k.a));
for (int i=1;i<=n;i++)
k.a[i][i] = 1;
for (;b;b>>=1,a = a * a){
if (b & 1)
k = k * a;
for (int i=1;i<=n;puts(""),i++)
for (int j=1;j<=n;j++)
cout << k.a[i][j] << " ";
}
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++){
cout << k.a[i][j] << " ";
}
cout << endl;
}
return 0;
}