zoukankan      html  css  js  c++  java
  • hdu1575 Tr A 矩阵快速幂模板题

    hdu1575   TrA

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1575

    都不需要构造矩阵,矩阵是题目给的,直接套模板,把对角线上的数相加就好了,记得取膜就好了。

    //Author: xiaowuga
    #include <bits/stdc++.h>
    #define maxx INT_MAX
    #define minn INT_MIN
    #define inf 0x3f3f3f3f
    #define maxn 12
    #define MOD 9973
    using namespace std;
    typedef long long ll;
    ll n,k;
    struct Matrix{
        ll mat[15][15];
        Matrix operator * (const Matrix & m) const{
            Matrix tmp;
            for(int i=0;i<n;i++)
                for(int j=0;j<n;j++){
                    tmp.mat[i][j]=0;
                    for(int k=0;k<n;k++){
                        tmp.mat[i][j]+=mat[i][k]*m.mat[k][j]%MOD;
                        tmp.mat[i][j]%=MOD;
                    }
                }
            return tmp;
        }
    };
    ll POW(Matrix &m,int k){
        Matrix ans;
        memset(ans.mat,0,sizeof(ans.mat));
        for(int i=0;i<n;i++) ans.mat[i][i]=1;
        while(k){
            if(k&1) ans=ans*m;
            k/=2;
            m=m*m;
        }
        ll sum=0;
        for(int i=0;i<n;i++){
            sum+=ans.mat[i][i];
            sum%=MOD;
        }
        return sum;
    }
    int main() {
        ios::sync_with_stdio(false);cin.tie(0);
        int T;
        cin>>T;
       while(T--){
          cin>>n>>k;
          Matrix m;
          for(int i=0;i<n;i++)
              for(int j=0;j<n;j++) cin>>m.mat[i][j];
          cout<<POW(m,k)<<endl;
       }         
        return 0;
    }
  • 相关阅读:
    komodo install on ubuntu
    关于scrapbook的导入导出
    hg常用命令小记

    在cygwin使用python
    命运多cuai
    常用shell命令
    360做电视广告了
    ubuntu im安装
    ubuntu下的路径
  • 原文地址:https://www.cnblogs.com/xiaowuga/p/7169529.html
Copyright © 2011-2022 走看看