您的位置:首页 > 其它

矩阵快速幂模板HDU——1575

2017-08-06 12:06 274 查看
#include <iostream>#include<vector>#include <cstdio>using namespace std;//用二维vector表示矩阵typedef vector<int> vec;typedef vector<vec> mat;typedef long long ll;const int mod=9973;//计算A*Bmat mul(mat &A,mat &B){mat C(A.size(),vec(B[0].size()));for(int i=0;i<A.size();i++){for(int k=0;k<B.size();k++){for(int j=0;j<B[0].size();j++){C[i][j]=(C[i][j]+A[i][k]*B[k][j])%mod;}}}return C;}//计算A^nmat pow(mat A,ll n){mat B(A.size(),vec(A.size()));for(int i=0;i<A.size();i++)B[i][i]=1;while(n>0){if(n&1)B=mul(B,A);A=mul(A,A);n>>=1;}return B;}int main(){int T;cin>>T;int n,k;while(T--){scanf("%d%d",&n,&k);mat A(n,vec(n));for(int i=0;i<n;i++)for(int j=0;j<n;j++){scanf("%d",&A[i][j]);}A=pow(A,k);int tr=0;for(int i=0;i<n;i++)tr=(tr+A[i][i])%mod;printf("%d\n",tr);}return 0;}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: