#include <iostream> #include <string.h> using namespace std; typedef long long ll; const int mod = 9973; int n; struct matrix { int f[10][10]; }e; matrix multi(matrix a, matrix b) { matrix ans; memset(ans.f,0,sizeof(ans.f)); for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) for(int k = 0; k < n; k++) ans.f[i][j] = (ans.f[i][j] + a.f[i][k] * b.f[k][j]) % mod; return ans; } matrix pow_mod(matrix a, ll k) { matrix ans; memset(ans.f,0,sizeof(ans.f)); for(int i = 0; i < n; i++) ans.f[i][i] = 1; while(k) { if(k&1) ans = multi(ans,a); a = multi(a,a); k >>= 1; } return ans; } int main() { int t,k; cin >> t; while(t--) { cin >> n >> k; for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) cin >> e.f[i][j]; matrix ans; ans = pow_mod(e,k); int sum = 0; for(int i = 0; i < n; i++) sum = (sum + ans.f[i][i]) % mod; cout << sum << endl; } }----------------------------------------------------------hdu1757---------------------------------------------------------------
矩阵快速幂模板
猜你喜欢
转载自blog.csdn.net/sugarbliss/article/details/80190264
今日推荐
周排行