不需要吧?
```cpp
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int P=1e9+7;
int n;
ll k;
const int N=110;
ll f[N][N],ans[N][N];
inline void qm2() {
ll f2[N][N];
memset(f2,0,sizeof(f2));
for(int k=1; k<=n; k++) {
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
f2[i][j]=(f2[i][j]+f[i][k]*f[k][j])%P;
}
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
f[i][j]=f2[i][j];
}
}
}
inline void qm1() {
ll f2[N][N];
memset(f2,0,sizeof(f2));
for(int k=1; k<=n; k++) {
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
f2[i][j]=(f2[i][j]+ans[i][k]*f[k][j])%P;
}
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
ans[i][j]=f2[i][j];
}
}
}
signed main() {
cin>>n>>k;
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
cin>>f[i][j];
}
}
for(int i=1; i<=n; i++) {
ans[i][i]=1;
}
while(k) {
if(k&1)
qm1();
qm2();
k>>=1;
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
cout<<ans[i][j]%P<<" ";
}
cout<<endl;
}
return 0;
}
```
by Rubbish_Du @ 2024-03-31 21:04:25
@[Rubbish_Du](/user/1169161)
可是我初始化就直接是一次方了啊
by Guojq @ 2024-03-31 21:08:57
@[Guojq](/user/1169136) 6
by Rubbish_Du @ 2024-03-31 21:16:47