[HDU] Tr A

我是连接

没想到我已经沦落到刷HDU的水题来过日子了。


#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>

using namespace std;

const int N = 15,Mod = 9973;



int n,k;

struct matrix{
	int M[N][N];
	
	void operator * (matrix x){
		int i,j,k; matrix t;
		for(i=1;i<=n;i++)
			for(j=1;j<=n;j++)
				t.M[i][j]=0;
		for(i=1;i<=n;i++)
			for(j=1;j<=n;j++)
				for(k=1;k<=n;k++)
					t.M[i][j]=(t.M[i][j]+M[i][k]*x.M[k][j]) % Mod;
		for(i=1;i<=n;i++)
			for(j=1;j<=n;j++)
				M[i][j]=t.M[i][j];
	}
}A,C;

int main(){
	int i,j,T;
	scanf("%d",&T);
	while(T--){
		scanf("%d%d",&n,&k);
		for(i=1;i<=n;i++)
			for(j=1;j<=n;j++) 
				scanf("%d",&A.M[i][j]);
		C=A;
		k-=1;
		for(; k ; k >>= 1 ){
			if( k & 1) A * C;
			C * C ;
		}
		int ans=0;
		for(i=1;i<=n;i++) ans=(ans + A.M[i][i]) % Mod;
		printf("%d\n",ans);
	}
	return 0;
}

posted @ 2017-12-09 10:06  FranceDisco  阅读(175)  评论(0编辑  收藏  举报