Tr A(矩阵快速幂)
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3175 Accepted Submission(s): 2373
每组数据的第一行有n(2 <= n <= 10)和k(2 <= k < 10^9)两个数据。接下来有n行,每行有n个数据,每个数据的范围是[0,9],表示方阵A的内容。
//矩阵快速幂
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef struct node{
int mat[12][12];
}node;
const int mod=9973;
int n,k;
node mat_multi(node a,node b)//计算两个矩阵的乘积
{
int i,j,k;
node c;
memset(c.mat,0,sizeof(c.mat));
for(i=0;i<n;++i)
for(j=0;j<n;++j)
for(k=0;k<n;++k)
{
c.mat[i][j]+=a.mat[i][k]*b.mat[k][j];//矩阵乘法:第i行第j列位置上的数为第一个矩阵
//第i行上的n个数与第二个矩阵第j列上的n个数对应相乘后所得的n个乘积之和
c.mat[i][j]%=mod;
}
return c;
}
node pow_mod(node a)//数值快速幂思想应用
{
int i;
node c;
memset(c.mat,0,sizeof(c.mat));
for(i=0;i<n;i++)
c.mat[i][i]=1;//c矩阵用于储存最终结果(类似于ans),在数值快速幂中初始化为1,
//而矩阵应初始为 单位矩阵(任何矩阵与单位矩阵相乘的结果不变)
while(k)
{
if(k&1) c=mat_multi(c,a);//移位快速幂
a=mat_multi(a,a);
k>>=1;
}
return c;
}
int main()
{
int T,i,j;
node a;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&k);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a.mat[i][j]);
int ans=0;
a=pow_mod(a);
for(i=0;i<n;i++)
ans+=a.mat[i][i];
printf("%d\n",ans%mod);
}
return 0;
}
Tr A(矩阵快速幂)的更多相关文章
- HDU.1575 Tr A ( 矩阵快速幂)
HDU.1575 Tr A ( 矩阵快速幂) 点我挑战题目 题意分析 直接求矩阵A^K的结果,然后计算正对角线,即左上到右下对角线的和,结果模9973后输出即可. 由于此题矩阵直接给出的,题目比较裸. ...
- hdu1575 Tr A 矩阵快速幂模板题
hdu1575 TrA 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1575 都不需要构造矩阵,矩阵是题目给的,直接套模板,把对角线上的数相加就好 ...
- Tr A(矩阵快速幂)
A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input 数据的第一行是一个T,表示有T组数据. 每组数据的第一行有n(2 <= n < ...
- HDU1575:Tr A(矩阵快速幂模板题)
http://acm.hdu.edu.cn/showproblem.php?pid=1575 #include <iostream> #include <string.h> ...
- (矩阵快速幂)HDU1575 Tr A
Tr A Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU 1575 Tr A 【矩阵经典2 矩阵快速幂入门】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1575 Tr A Time Limit: 1000/1000 MS (Java/Others) Me ...
- 矩阵快速幂 hud 1575 Tr A 模板 *
Tr A Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 1575 Tr A(矩阵快速幂)
今天做的第二道矩阵快速幂题,因为是初次接触,各种奇葩错误整整调试了一下午.废话不说,入正题.该题应该属于矩阵快速幂的裸题了吧,知道快速幂原理(二进制迭代法,非递归版)后,剩下的只是处理矩阵乘法的功夫了 ...
- hdu 1575 Tr A(矩阵快速幂,简单)
题目 和 LightOj 1096 - nth Term 类似的线构造一个符合题意的矩阵乘法模版,然后套快速幂的模版,具体的构造矩阵我就不作图了,看着代码也能理解吧 #include<stdi ...
随机推荐
- codevs1080线段树练习
题目描述 Description 一行N个方格,开始每个格子里都有一个整数.现在动态地提出一些问题和修改:提问的形式是求某一个特定的子区间[a,b]中所有元素的和:修改的规则是指定某一个格子x,加上或 ...
- Call Paralution Solver from Fortran
Abstract: Paralution is an open source library for sparse iterative methods with special focus on mu ...
- Unity3d LineRenderer画线
原地址:http://www.cnblogs.com/88999660/archive/2013/01/21/2869498.html 1. 画多条线 画多条线需要在场景中放置多个GameObjec ...
- Java--读写文件综合
package javatest; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream ...
- 使用pymongo需要手动关闭MongoDB Connection吗?
答:Disconnecting will close all underlying sockets in the connection pool. If this instance is used a ...
- Sharepoint程序员应该了解的知识
做为一个Sharepoint程序员应该了解的知识:注意,我说的是程序员.因为我一直把自己看一个普普通通的程序员. 前提: 要知道网络基础(包括DHCP.IP.掩码.DNS.网关.广播),会装操作系统( ...
- SQL— CONCAT(字符串连接函数)
有的时候,我们有需要将由不同栏位获得的资料串连在一起.每一种资料库都有提供方法来达到这个目的: MySQL: CONCAT() Oracle: CONCAT(), || SQL Server: + C ...
- 【转】mysql忘记root密码的解决方法
本文收集于本人的笔记本,由于找不到原文出处.在此省略,如哪位知道可以联系我加上. 方法一:在windows下:1.打开命令行(DOS)窗口,停止mysql服务: net stop mysql 2.在D ...
- CocoaPods 使用本地代码
CocoaPods使用方法 http://iiiyu.com/2013/12/19/learning-ios-notes-thirty-one/ 使用本地方代码的方法如下,下面建立一个名为downlo ...
- svn 切换默认用户名
2015年1月19日 15:37:30\ 原文: http://www.2cto.com/os/201307/229325.html linux svn切换用户 1. 临时切换 在所有命令下强 ...