样例都没过...
#include<bits/stdc++.h>
using namespace std;
const int N=35;
int n,Mod,k;
struct Node{
int mx[N][N];
}a,b,c,s,sum;
Node operator *(const Node &a,const Node &b){
memset(c.mx,0,sizeof(c.mx));
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=n;k++){
c.mx[i][j]=(c.mx[i][j]+(a.mx[i][k]*b.mx[k][j])%Mod)%Mod;
sum.mx[i][j]=(sum.mx[i][j]+c.mx[i][j])%Mod;
}
}
}
return c;
}
int main(){
cin>>n>>k>>Mod;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a.mx[i][j];
}
s.mx[i][i]=1;
}
while(k){
if(k&1) s=s*a;
a=a*a;
k>>=1;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<sum.mx[i][j]%Mod<<" ";
}
cout<<endl;
}
return 0;
}