HDU 1575 Tr A(矩阵快速幂 水 入门)

来源:互联网 发布:阿里云的解决方案ppt 编辑:程序博客网 时间:2024/05/29 19:35

题意:

求m个n*n的矩阵相乘后的矩阵的对角线之和

 

简单的矩阵相乘,可当入门题,套套模板就可以了

 

#include <iostream>#include <string>#include <cstring>#include <cstdio>using namespace std;#define mod 9973int n;struct matrix{int a[15][15];};matrix mul(matrix a,matrix b){matrix ret;memset(ret.a,0,sizeof(ret.a));for(int i=0;i<n;i++){for(int k=0;k<n;k++)if(a.a[i][k])for(int j=0;j<n;j++)if(b.a[k][j])ret.a[i][j]= (a.a[i][k]*b.a[k][j]+ret.a[i][j])%mod;}return ret;}matrix mpower(matrix tem, int m){matrix I;for(int i=0;i<15;i++)for(int j=0;j<15;j++)I.a[i][j] = (i==j);while(m){if(m&1) I = mul(I,tem);m>>=1;tem = mul(tem,tem);}return I;}int main(){int t;cin>>t;while(t--){int m;matrix tem;cin>>n>>m;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>tem.a[i][j];}}tem = mpower(tem,m);int sum=0;for(int i=0;i<n;i++){sum = (sum+tem.a[i][i])%mod;}cout<<sum<<endl;}return 0;}


 

0 0
原创粉丝点击