/*

本题的思路比较简单,就是将递推公式写出来,然后表达成为一个矩阵的形式

最后通过计算就可以得到一个符合题目要求的矩阵,

然后就是将矩阵上面所有的对角线元素相加

得到的结果即为所求的目标

*/

#include<cstdio> 
#include<cstring> 
using namespace std; 
const int maxn = 15; 
#define mod 9973 
int res[maxn][maxn]; 
int n; 
void mul(int a[][15],int b[][15],int c[][15]){ 
    int temp[15][15];  memset(temp,0,sizeof(temp)); 
    for(int i=0;i<n;i++) 
      for(int j=0;j<n;j++) 
        for(int k=0;k<n;k++){
           temp[i][j]=(temp[i][j]+ a[i][k]*b[k][j] )%mod; 
        } 
    memcpy(c,temp,sizeof(temp)); 
}
void pow(int a[][15],int k){ 
     while(k){ 
         if(k&1){ 
             mul(res,a,res); 
         } 
         mul(a,a,a); 
         k>>=1; 
     //    printf("%d\n",k); 
     } 

int main(){ 
    int T,k; 
    int a[maxn][maxn]; 
    scanf("%d",&T); 
    while(T--){ 
        scanf("%d%d",&n,&k); 
        for(int i=0;i<n;i++)  for(int j=0;j<n;j++)  res[i][j]=(i==j); 
        //这个做法主要是将对角线标记出来,然后就可以与矩阵a相乘,最后得到的a矩阵就是一个对角矩阵
        for(int i=0;i<n;i++)  for(int j=0;j<n;j++)  scanf("%d",&a[i][j]); 
        pow(a,k); 
        int ans=0; 
        for(int i=0;i<n;i++) ans+=res[i][i]; 
        printf("%d\n",ans%mod); 
    } 
    return 0; 

//自己现在最大的问题就是知道矩阵相乘的方法,但是将一个数组的问题处理好就没办法了……

////////////////////////////////////////////////////////////////////////////////////////////////////////////

矩阵方面的问题处理参考方式

矩阵乘法
struct Matrix{
    long long mat[N][N];
    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;
//这个是通过new一个空间后达到目的的,所以后面会有空间的保留,可以通过这种方式将数组传递下来
    }
};

矩阵快速幂——将运算推广到矩阵上HDU 1575的更多相关文章

  1. Luogu P3390 【模板】矩阵快速幂&&P1939 【模板】矩阵加速(数列)

    补一补之前的坑 因为上次关于矩阵的那篇blog写的内容太多太宽泛了,所以这次把一些板子和基本思路理一理 先看这道模板题:P3390 [模板]矩阵快速幂 首先我们知道矩阵乘法满足结合律而不满足交换律的一 ...

  2. hdu3306 Another kind of Fibonacci【矩阵快速幂】

    转载请注明出处:http://www.cnblogs.com/KirisameMarisa/p/4187670.html 题目链接:http://acm.hdu.edu.cn/showproblem. ...

  3. [技术]浅谈OI中矩阵快速幂的用法

    前言 矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中,矩阵的运算是数值分析领域的重要问题. 基本介绍 (该部分为入门向,非入门选手可以跳过) 由 m行n列元素排列成的矩形阵列.矩阵里的 ...

  4. BZOJ 2004 公交线路(状压DP+矩阵快速幂)

    注意到每个路线相邻车站的距离不超过K,也就是说我们可以对连续K个车站的状态进行状压. 然后状压DP一下,用矩阵快速幂加速运算即可. #include <stdio.h> #include ...

  5. 解题报告:poj 3070 - 矩阵快速幂简单应用

    2017-09-13 19:22:01 writer:pprp 题意很简单,就是通过矩阵快速幂进行运算,得到斐波那契数列靠后的位数 . 这是原理,实现部分就是矩阵的快速幂,也就是二分来做 矩阵快速幂可 ...

  6. HDU 2276 Kiki & Little Kiki 2( 矩阵快速幂 + 循环同构矩阵 )

    蒟蒻的我还需深入学习 链接:传送门 题意:给出一个长度为 n,n 不超过100的 01 串 s ,每当一个数字左侧为 1 时( 0的左侧是 n-1 ),这个数字就会发生改变,整个串改变一次需要 1s ...

  7. POJ 3070 Fibonacci 矩阵快速幂模板

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18607   Accepted: 12920 Descr ...

  8. hdu 5451 Best Solver 矩阵循环群+矩阵快速幂

    http://acm.hdu.edu.cn/showproblem.php?pid=5451 题意:给定x    求解 思路: 由斐波那契数列的两种表示方法, 之后可以转化为 线性表示 F[n] = ...

  9. hdu 1005 Number Sequence(矩阵快速幂,找规律,模版更通用)

    题目 第一次做是看了大牛的找规律结果,如下: //显然我看了答案,循环节点是48,但是为什么是48,据说是高手打表出来的 #include<stdio.h> int main() { ], ...

随机推荐

  1. Hadoop Datanode 机器缺失 VD 问题修复尝试

    背景: 新集群 Datanode 使用两个 SSD 做 raid 1 作为根磁盘,12 个 SAS 单独做 raid 0 作为数据盘,在机器部署完毕后,缺发现 PD slot 4 和 slot 5 丢 ...

  2. pythonRedis 订阅功能实现

    两天机器做,host要写订阅主机的ip,客户端发消息,服务端订阅消息 cat redis_connector.py #!/usr/bin/env python__author__ = 'Q.Li'im ...

  3. linux下安装LoadRunner LoadGenerator

    root用户登录 关闭防火墙: setenforce 0 /etc/init.d/iptables stop 先安装一个rpm包,compat-libstdc++-33-3.2.3-61.i386.r ...

  4. Devstack single node Installation on VM

    Last three days, I want to install devstack on my virtual machine on Vmware Workstation.The VM'syste ...

  5. matlab imshow()函数显示白色图像问题

    在MATLAB中,我们常使用imshow()函数来显示图像,而此时的图像矩阵可能经过了某种运算.在MATLAB中,为了保证精度,经过了运算的图像矩阵I其数据类型会从uint8型变成double型.如果 ...

  6. 《JavaScript高级程序设计》读书笔记 ---Date 类型

    ECMAScript 中的Date 类型是在早期Java 中的java.util.Date 类基础上构建的.为此,Date类型使用自UTC(Coordinated Universal Time,国际协 ...

  7. oracle索引

    1,建立索引 create index goods_num on goods (num) tablespace data; 2,查看表上索引 select * from USER_INDEXES wh ...

  8. java中的词汇

    java中的词汇: 空白符:空格,制表符,换行符.他们的存在使得代码变得很美观. 标识符:由大小写字母,数字,下划线,美元符号组成.且数字不能用于标识符第一个字符. 字面值:变量的值通常使用表示常量的 ...

  9. android 实现透明状态栏

    主要使用https://github.com/jgilfelt/SystemBarTint这个开源库 1 ,导入SystemBarTintManager类 2 ,BaseFragmentActivit ...

  10. Linux性能监测:CPU篇(转)

    http://os.51cto.com/art/201012/239880.htm CPU 的占用主要取决于什么样的资源正在 CPU 上面运行,比如拷贝一个文件通常占用较少 CPU,因为大部分工作是由 ...