Untitled
unknown
plain_text
2 years ago
1.1 kB
8
Indexable
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
#define MAX_N 100
#define MOD 100000007
struct Matrix {
long long mat[MAX_N][MAX_N];
};
int T, tc;
int N, M;
Matrix m;
Matrix res;
Matrix mat_mul(Matrix A, Matrix B)
{
Matrix res;
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
res.mat[i][j]=0;
for(int k=0; k<N; k++){
res.mat[i][j] = (res.mat[i][j] + A.mat[i][k] * B.mat[k][j]) % MOD;
}
}
}
return res;
}
void mat_pow(int exp)
{
if(exp==1)
return;
mat_pow(exp/2);
res = mat_mul(res, res);
if(exp%2!=0)
res = mat_mul(res, m);
}
int main()
{
freopen("input.txt", "r", stdin);
cin >> T;
for(tc=1; tc<=T; tc++)
{
cin >> N >> M;
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
cin >> m.mat[i][j];
res.mat[i][j] = m.mat[i][j];
}
}
mat_pow(M);
cout << "Case #" << tc << endl;
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
cout << res.mat[i][j] << " ";
}
cout << endl;
}
}
return 0;
}
Editor is loading...
Leave a Comment