题目1443:Tr A
来源:互联网 发布:手机淘宝分期付款流程 编辑:程序博客网 时间:2024/06/08 17:50
- 题目描述:
A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973。
- 输入:
数据的第一行是一个T,表示有T组数据。
每组数据的第一行有n(2 <= n <= 10)和k(2 <= k < 10^9)两个数据。接下来有n行,每行有n个数据,每个数据的范围是[0,9],表示方阵A的内容。
- 输出:
对应每组数据,输出Tr(A^k)%9973。
- 样例输入:
22 21 00 13 999999991 2 34 5 67 8 9
- 样例输出:
22686
代码:
#include <stdio.h>#define M 9973struct Matrix { int m[11][11];};int n;Matrix mul(Matrix a, Matrix b) { int i,j,k; Matrix c; for(i=1;i<=n;i++) for(j=1;j<=n;j++) { c.m[i][j] = 0; for(k=1;k<=n;k++) c.m[i][j] += (a.m[i][k] * b.m[k][j]) % M; c.m[i][j] %= M; } return c;}Matrix E;Matrix pow(Matrix a, int k) { Matrix c = E; while(k) { if(k%2==1) c = mul(c,a); a = mul(a,a); k /= 2; } return c;} int main() { int t,k; while(scanf("%d",&t)!=EOF) { int i,j,l; for(i=0;i<t;i++) { scanf("%d %d",&n,&k); for(j=1;j<=n;j++) for(l=1;l<=n;l++) { if(j==l) E.m[j][l] = 1; else E.m[j][l] = 0; } Matrix tmp; for(j=1;j<=n;j++) for(l=1;l<=n;l++) scanf("%d",&tmp.m[j][l]); tmp = pow(tmp,k); int ans=0; for(j=1;j<=n;j++) ans += tmp.m[j][j] % M; printf("%d\n",ans%M); } } return 0;}
- 题目1443:Tr A
- 题目1443:Tr A
- 59-题目1443:Tr A
- 九度 题目1443:Tr A
- 九度oj 题目1443:Tr A
- 九度OJ题目1443:Tr A
- 九度 题目1443:Tr A
- 九度 题目1443:Tr A
- 题目59:Tr A
- 【学习笔记】〖九度OJ〗题目1443:Tr A
- HDOJ 题目1575 Tr A(矩阵相乘,二分)
- HUD - 1575 - Tr A ( 矩阵快速幂,简单题目 )
- Tr A
- Tr A
- Tr A
- Tr A
- Tr A
- Tr A
- FZOJ2110 star(DFS)
- Expecting a string, date or number here, Expression x is instead a freemarker.template.TemplateBoole
- 01.UTinventory多用户进销存系统概述
- java文件读取
- 映射组件属性之④:组件作为Map的索引
- 题目1443:Tr A
- JAVA & ANT 入门
- Java基础知识——Java语言基础
- 黑马程序员-C#中的方法与飞行棋游戏设计思路笔记
- CentOS 6.4 开机 unexpected inconsistency run fsck manually 问题的修复
- 手机报表
- [leetcode] Length of Last Word
- 修改Wamp中mysql默认空密码
- extern 作用详解