zoukankan      html  css  js  c++  java
  • 矩阵快速幂模板

    #include<map>
    #include<set>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<math.h>
    #include<cstdio>
    #include<sstream>
    #include<numeric>//STL数值算法头文件
    #include<stdlib.h>
    #include <ctype.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    #include<functional>//模板类头文件
    using namespace std;
    
    typedef long long ll;
    const int maxn=20;
    const int INF=0x3f3f3f3f;
    
    const int mod=9973;
    
    int n,m;
    struct mat
    {
        int arr[maxn][maxn];
    } str;
    
    mat mul(mat& A,mat& B)
    {
        mat res;
        memset(res.arr,0,sizeof(res.arr));
        for(int i=0; i<n; i++)
            for(int j=0; j<n; j++)
                for(int k=0; k<n; k++)
                    res.arr[i][j]=((res.arr[i][j]+A.arr[i][k]*B.arr[k][j])%mod+mod)%mod;
        return res;
    }
    
    mat pow(mat &A,int k)
    {
        mat M;
        memset(M.arr,0,sizeof(M.arr));
        for(int i=0; i<n; i++)
            M.arr[i][i]=1;
        while(k)
        {
            if(k&1) M=mul(M,A);
            A=mul(A,A);
            k>>=1;
        }
        return M;
    }
    
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d %d",&n,&m);
            for(int i=0; i<n; i++)
                for(int j=0; j<n; j++)
                    scanf("%d",&str.arr[i][j]);
            int sum=0;
            str=pow(str,m);
            for(int i=0; i<n; i++)
                sum+=str.arr[i][i];
            printf("%d
    ",sum%mod);
        }
        return 0;
    }
    
  • 相关阅读:
    Hadoop 2.7.1 源代码目录结构分析
    Jit
    java性能分析工具
    最近一个dish项目的建设思考
    mysql的ACID的理解
    实践中积累沟通组织经验
    系统性能--磁盘/网卡
    系统性能--CPU
    调停者模式的批斗
    channel和Stream的对比
  • 原文地址:https://www.cnblogs.com/nyist-xsk/p/7264804.html
Copyright © 2011-2022 走看看