rt,下载数据点1发现输出出现负数,求调 (测试点7、8、11 AC,其他WA)
#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
long long n,q,a[105][105],ans[105][105],t[105][105];
int main() {
cin>>n>>q;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++) {
cin>>a[i][j];
if(i==j)ans[i][j]=1;
}
while(q!=0) {
if(q&1) {
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++) {
t[i][j]=0;
for(int k=1; k<=n; k++)t[i][j]+=ans[i][k]*a[k][j];
t[i][j]%=mod;
}
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)ans[i][j]=t[i][j];
}
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++) {
t[i][j]=0;
for(int k=1; k<=n; k++)t[i][j]+=a[i][k]*a[k][j];
t[i][j]%=mod;
}
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)a[i][j]=t[i][j];
q>>=1;
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++)cout<<ans[i][j]<<" ";
cout<<"\n";
}
return 0;
}