Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define int long long
- #define mod 1000000007LL
- const int maxn = 110;
- int n, k;
- vector<vector<int>> mul(vector<vector<int>> a, vector<vector<int>> b){
- vector<vector<int>> c(maxn, vector<int>(maxn));
- for(int i = 0; i < n; i ++)
- for(int j = 0; j < n; j ++)
- for(int k = 0; k < n; k ++)
- c[i][j] = (c[i][j] + a[i][k] * b[k][j]) % mod;
- return c;
- }
- vector<vector<int>> ppow(vector<vector<int>> a, int k){
- if(k == 1) return a;
- if(k % 2 == 0) return ppow(mul(a, a), k >> 1);
- if(k % 2 == 1) return mul(ppow(mul(a, a), k >> 1), a);
- }
- int32_t main(){
- cin.tie(0), cout.sync_with_stdio(0);
- cin >> n >> k;
- vector<vector<int>> a(maxn, vector<int>(maxn));
- for(int i = 0; i < n; i ++)
- for(int j = 0; j < n; j ++)
- cin >> a[i][j];
- a = ppow(a, k);
- for(int i = 0; i < n; i ++){
- for(int j = 0; j < n; j ++)
- cout << a[i][j] << " ";
- cout << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement