1 #include2 #include 3 #include 4 #include 5 using namespace std; 6 7 typedef long long ll; 8 int n, m; 9 const int maxn = 105;10 const int MOD = 1e9 + 7;11 12 struct node{13 ll a[maxn][maxn];14 };15 16 node A, ans;17 18 node multi(node x, node y){19 node z;20 for(int i = 1;i <= n;i++){21 for(int j = 1;j <= n;j++){22 z.a[i][j] = 0;23 for(int k = 1;k <= n;k++){24 z.a[i][j] += x.a[i][k]*y.a[k][j]%MOD;25 z.a[i][j] %= MOD;26 }27 }28 }29 return z;30 }31 32 void f(){33 while(m > 0){34 if(m%2){35 //ans = ans*a%MOD;36 ans = multi(ans, A);37 }38 //a = (a*a)%MOD;39 A = multi(A,A);40 m /= 2;41 }42 }43 44 int main(){45 ios_base::sync_with_stdio(false);46 cin.tie(0);47 cin >> n >> m;48 for(int i = 1;i <= n;i++){49 for(int j = 1;j <= n;j++){50 cin >> A.a[i][j];51 ans.a[i][j] = A.a[i][j];52 }53 }54 m--;55 f();56 for(int i = 1;i <= n;i++){57 for(int j = 1;j<=n;j++)58 {59 if(j == 1){60 cout << ans.a[i][j];61 }62 else{63 cout << " " << ans.a[i][j];64 }65 }66 cout << endl;67 }68 return 0;69 }