A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973。
Input
数据的第一行是一个T,表示有T组数据。
每组数据的第一行有n(2 <= n <= 10)和k(2 <= k < 10^9)两个数据。接下来有n行,每行有n个数据,每个数据的范围是[0,9],表示方阵A的内容。
Output
对应每组数据,输出Tr(A^k)%9973。
Sample Input
2
2 2
1 0
0 1
3 99999999
1 2 3
4 5 6
7 8 9
Sample Output
2
2686

矩阵快速幂的模版题,原理类似于一般的快速幂,在使用时需要注意用结构体存储矩阵,虽然里面只有一个二维数组,但是用结构体存储更加方便,除此之外由于矩阵乘法不满足交换律,所以在一些细节需要注意顺序问题。
矩阵快速幂更多地适用于解决递推式问题,通常含有某种范围较大的递推关系。
AC代码:

#include <stdio.h>
#include <string.h>typedef struct{int mat[15][15];
}MOD;
int n;
MOD mul(MOD a,MOD b,int p)//用来计算矩阵乘法
{int i,j,k;MOD c;memset(c.mat,0,sizeof(c.mat));for(i=1;i<=n;i++){for(j=1;j<=n;j++){for(k=1;k<=n;k++){c.mat[i][j]=(c.mat[i][j]+a.mat[i][k]*b.mat[k][j])%p;}}}return c;}MOD PowerMod(MOD a,int b,int p)//矩阵快速幂
{MOD c;int i,j;for(i=1;i<=n;i++)for(j=1;j<=n;j++)c.mat[i][j]= (i==j);while(b>0){        if(b%2)c=mul(c,a,p);b/=2;a=mul(a,a,p);}return c;
}int main()
{int T;int k,i,j;int sum;MOD c;scanf("%d",&T);while(T--){sum=0;scanf("%d %d",&n,&k);for(i=1;i<=n;i++) for(j=1;j<=n;j++)scanf("%d",c.mat[i]+j);c=PowerMod(c,k,9973);  for(i=1;i<=n;i++)sum=(sum+c.mat[i][i])%9973;printf("%d\n",sum);}return 0;
}

Tr A 矩阵快速幂相关推荐

  1. HDU (1575)Tr A ---矩阵快速幂

    Tr A Problem Description A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input 数据的第一行是一个T,表示有T组数据. 每 ...

  2. Tr A(矩阵快速幂)

    A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input 数据的第一行是一个T,表示有T组数据.  每组数据的第一行有n(2 <= n < ...

  3. 2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)- 分组(矩阵快速幂套NTT优化dp)

    题目链接:点击查看 题目大意:给出 nnn 个连续的小球,每次可以选择单独的一个或者相邻的两个小球分成一组,允许有剩余的小球,问恰好分成 k∈{1,2,3,⋯,m}k\in\{1,2,3,\cdots ...

  4. 2021HDU多校8 - 7057 Buying Snacks(矩阵快速幂套NTT优化dp)

    题目链接:点击查看 题目大意:给出 nnn 种糖果,每种糖果有大小包装之分,有三种购买方案,价钱分别如下: 单独购买一个小的,花费一块钱 单独购买一个大的,花费两块钱 ∀i>1\forall i ...

  5. 矩阵快速幂的学习(系统的学习)

    学习博客:https://www.cnblogs.com/cmmdc/p/6936196.html https://www.cnblogs.com/yan-boy/archive/2012/11/29 ...

  6. ZYH的斐波那契数列【线段树动态开点+矩阵快速幂求斐波那契】

    描述 ZYH最近研究数列研究得入迷啦! 现在有一个斐波拉契数列(f[1]=f[2]=1,对于n>2有f[n]=f[n-1]+f[n-2]), 但是斐波拉契数列太简单啦,于是ZYH把它改成了斐波拉 ...

  7. 2020.7.20【算协集训】矩阵快速幂

    算法分析与排序 A - Fibonacci (POJ - 3070) 分析 代码 B - Tr A (HDU - 1575) 分析 代码 C - A Simple Math Problem (HDU ...

  8. 矩阵快速幂+构造方法

    与快速幂一样,可以将递推式通过二进制的方式来进行优化,这个学了快速幂就是十分容易理解 大概的板子如下: struct mat///自己定义大小的矩阵 {ll m[11][11]; }; mat mul ...

  9. 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂

    原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...

最新文章

  1. matlab llc谐振电路,一个菜鸟对LLC谐振知识的渴望
  2. Android性能优化典范第三季
  3. 数开头的成语有哪些_艺术留学文书申请过程中应避开哪些雷区?ACG艺术留学
  4. leetcode算法题--最长公共子序列★
  5. 23 | 二叉树基础(上):什么样的二叉树适合用数组来存储?
  6. 如何用记事本编写运行java程序?
  7. Reflector 3在录制中如何添加自己的声音
  8. [译] JavaScript 中的私有变量
  9. 合肥师范学院计算机组成原理实验,计算机组成原理实验教学探索
  10. php exeil导入,反编译工具ILSpy.exe
  11. 一、从0开始——黑客学习路线
  12. Java编程基础知识(一)
  13. 经典vim插件功能说明、安装方法和使用方法介绍
  14. Android Studio报错 程序包android.support.annotation不存在 解决方案
  15. AliOS Things
  16. svg react_React中的SVG陷阱
  17. 电信卡间隔多久再办,流量卡申请间隔是多少?
  18. 社会责任·价值共创,中关村网络安全与信息化产业联盟对话网信企业家海泰方圆董事长姜海舟
  19. CrashLoopBackOff
  20. python 爬虫 处理429错误

热门文章

  1. Android Glide数据更新及内存缓存、硬盘缓存清理
  2. ios开发之手势处理 之手势识别一
  3. 一个搜索迷宫出路的程序
  4. 可视化数据展示工具ChatSQL
  5. 【JPA 级联保存/级联删除】@OneToMany (双向) 一对多【转】
  6. redis用list做消息队列
  7. sqlserver主键自增
  8. 设计模式全解析 23种
  9. 中颖内带LED资源驱动代码
  10. 【CSAPP笔记】4. 汇编语言——基础知识