http://acm.hdu.edu.cn/showproblem.php?pid=1575
#include <iostream> #include <string.h> #include <stdlib.h> #include <cstdio> #include <algorithm> #define mod 9973 using namespace std; struct matrix { int a[11][11]; } init,res; int n,k; matrix Mult(matrix x,matrix y) { matrix tmp; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { tmp.a[i][j]=0; for(int k=0; k<n; k++) tmp.a[i][j]=(tmp.a[i][j]+x.a[i][k]*y.a[k][j])%mod; } } return tmp; } matrix Pow(matrix x,int k) { matrix tmp; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) tmp.a[i][j]=(i==j); } while(k) { if(k&1) tmp=Mult(tmp,x); k>>=1; x=Mult(x,x); } return tmp; } int main() { int T; cin>>T; while(T--) { cin>>n>>k; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) scanf("%d",&init.a[i][j]); } res=Pow(init,k); int sum=0; for(int i=0; i<n; i++) sum=(sum+res.a[i][i])%mod; cout<<sum<<endl; } return 0; }
时间: 2024-10-11 11:54:35