题目描述:

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。

样例输入:
2
2 2
1 0
0 1
3 99999999
1 2 3
4 5 6
7 8 9
样例输出:
2
2686 这个题考查矩阵相乘和幂的快速运算
对于幂的快速运算
考虑 m 的 n 次幂
n 可以写为 几个二的平方项的和
比如n 为 10, 二进制位 1010, 8 + 2
那么m 的 10 次幂 等于 m的8次幂 乘以 m的二次幂
通过不断的乘方运算,即可得出答案 代码如下
 #include <cstdio>
#include <cstdlib>
#include <cstring>
#define M 9973
int t, n, k;
int num[][];
int res[][]; void multi() {
int num2[][], num3[][];
for(int i = ; i < n; i++) {
for(int j = ; j < n; j++) {
num2[i][j] = num[i][j];
num3[i][j] = ;
}
}
for(int i = ; i < n; i++) {
for(int j = ; j < n; j++) {
for(int k = ; k < n; k++) {
num3[i][j] = (num3[i][j] + num[i][k] * num2[k][j])%M;
}
}
}
for(int i = ; i < n; i++) {
for(int j = ; j < n; j++) {
num[i][j] = num3[i][j];
}
}
} void multiR() {
int num3[][];
memset(num3, , sizeof(num3));
for(int i = ; i < n; i++) {
for(int j = ; j < n; j++) {
for(int k = ; k < n; k++) {
num3[i][j] = (num3[i][j] + num[i][k] * res[k][j])%M;
}
}
}
for(int i = ; i < n; i++) {
for(int j = ; j < n; j++) {
res[i][j] = num3[i][j];
}
}
} int main(int argc, char const *argv[])
{
int t;
scanf("%d",&t);
while(t--) {
scanf("%d %d",&n,&k);
for(int i = ; i < n; i++) {
for(int j = ; j < n; j++) {
scanf("%lld",&num[i][j]);
}
}
int p = k;
memset(res, , sizeof(res));
for(int i = ; i < n; i++) {
res[i][i] = ;
}
while(p > ) {
if(p&) {
multiR();
}
multi();
p >>=;
} int ans = ;
for(int i = ; i < n; i++) {
ans = (ans + res[i][i])%M;
}
printf("%d\n",ans);
}
return ;
}

九度oj 题目1443:Tr A的更多相关文章

  1. 九度OJ题目1443:Tr A (JAVA)

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

  2. 九度OJ 题目1384:二维数组中的查找

    /********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...

  3. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  4. 九度oj题目&amp;吉大考研11年机试题全解

    九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码).    http://ac.jobdu.com/problem.php?pid=11 ...

  5. 九度oj 题目1007:奥运排序问题

    九度oj 题目1007:奥运排序问题   恢复 题目描述: 按要求,给国家进行排名. 输入:                        有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...

  6. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

  7. 九度OJ题目1105:字符串的反码

    tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...

  8. 九度oj题目1009:二叉搜索树

    题目描述: 判断两序列是否为同一二叉搜索树序列 输入:                        开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...

  9. 九度oj题目1002:Grading

    //不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...

随机推荐

  1. HDFS读写策略

    数据的读取过程: 数据读取: 客户端调用FileSystem 实例的open 方法,获得这个文件对应的输入流InputStream. 通过RPC 远程调用NameNode ,获得NameNode 中此 ...

  2. 让您的 VS 2012/2013 升级开发 .NET 4.6 -- Targeting the .NET Framework 4.6 (多目标包)

    原文出处:让您的 VS 2012/2013 升级开发 .NET 4.6 -- Targeting the .NET Framework 4.6 (多目标包) http://www.dotblogs.c ...

  3. Codeforces Round #319 (Div. 2) C Vasya and Petya's Game (数论)

    因为所有整数都能被唯一分解,p1^a1*p2^a2*...*pi^ai,而一次询问的数可以分解为p1^a1k*p2^a2k*...*pi^aik,这次询问会把所有a1>=a1k &&am ...

  4. [web开发] Vue + spring boot + echart 微博爬虫展示平台

    1.微博登录 2.爬取数据 3.mysql存储 4.pyechart本地展示 5.用vue搭建网站web展示 先放图: 1.微博登录 新浪微博的登录不是简单的post就能解决的,他的登录有加密,所以我 ...

  5. Python面向对象进阶(二)

    Python面向对象进阶2.html :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1 ...

  6. django 数据库中中文转化为韩语拼音

    1.安装模块 django-uuslug pip install django-uuslug 2.导入模块 from uuslug import slugify 3.使用模块 slugify('天龙八 ...

  7. PAT (Basic Level) Practise (中文)- 1011. A+B和C (15)

    http://www.patest.cn/contests/pat-b-practise/1011 给定区间[-231, 231]内的3个整数A.B和C,请判断A+B是否大于C. 输入格式: 输入第1 ...

  8. java基础—多态(动态加载)

    一.面向对象最核心的机制——动态绑定,也叫多态

  9. 字符串 -----JavaScript

    本文摘要:http://www.liaoxuefeng.com/ JavaScript的字符串就是用''或""括起来的字符表示. 如果'本身也是一个字符,那就可以用"&q ...

  10. tcp 高性能服务, netty,mqtt

    1. io 线程不要有比较长的服务. 全部异步化. [1] netty 权威指南上只是说业务复杂时派发到业务线程池种. 共用的线程池最好都轻量. 多层线程池后, 下层的可以进行隔离. 这个是 mqtt ...