HDU.1575 Tr A ( 矩阵快速幂)
HDU.1575 Tr A ( 矩阵快速幂)
题意分析
直接求矩阵A^K的结果,然后计算正对角线,即左上到右下对角线的和,结果模9973后输出即可。
由于此题矩阵直接给出的,题目比较裸。
代码总览
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <cmath>
#define INF 0x3f3f3f3f
#define nmax 200
#define MEM(x) memset(x,0,sizeof(x))
using namespace std;
const int Dmax = 11;
int N;
int MOD;
typedef struct{
    int matrix[Dmax][Dmax];
    void init()//初始化为单位矩阵
    {
        memset(matrix,0,sizeof(matrix));
        for(int i = 0; i<Dmax;++i) matrix[i][i] = 1;
    }
}MAT;
MAT ADD(MAT a, MAT b)
{
    for(int i = 0; i<N;++i){
        for(int j = 0;j<N;++j){
            a.matrix[i][j] +=b.matrix[i][j];
            a.matrix[i][j] %= MOD;
        }
    }
    return a;
}
MAT MUL(MAT a, MAT b)
{
    MAT ans;
    for(int i = 0; i<N;++i){
        for(int j = 0; j<N;++j){
            ans.matrix[i][j] = 0;
            for(int k = 0; k<N;++k){
                ans.matrix[i][j] += ( (a.matrix[i][k]) % MOD * (b.matrix[k][j]) % MOD) % MOD;
            }
            ans.matrix[i][j] %= MOD;
        }
    }
    return ans;
}
MAT POW(MAT a, int t)
{
    MAT ans; ans.init();
    while(t){
        if(t&1) ans = MUL(ans,a);
        t>>=1;
        a = MUL(a,a);
    }
    return ans;
}
void OUT(MAT a)
{
    for(int i = 0; i<N;++i){
        for(int j =  0; j<N;++j){
            printf("%5d",a.matrix[i][j]);
        }
        printf("\n");
    }
}
void IN(MAT & a)
{
    for(int i = 0; i<N;++i){
        for(int j = 0; j<N;++j){
            scanf("%d",&a.matrix[i][j]);
        }
    }
}
void CAL(MAT a)
{
    long long ans = 0;
    for(int i = 0; i<N;++i) ans+=a.matrix[i][i];
    ans %= MOD;
    printf("%lld\n",ans);
}
int main()
{
    //freopen("in.txt","r",stdin);
    int T;
    scanf("%d",&T);
    while(T--){
        MOD = 9973;
        int k;MAT m;
        scanf("%d %d",&N,&k);
        IN(m);
        m = POW(m,k);
        CAL(m);
    }
    return 0;
}
HDU.1575 Tr A ( 矩阵快速幂)的更多相关文章
- HDU 1575 Tr A(矩阵高速幂)
		
题目地址:HDU 1575 矩阵高速幂裸题. 初学矩阵高速幂.曾经学过高速幂.今天一看矩阵高速幂,原来其原理是一样的,这就好办多了.都是利用二分的思想不断的乘.仅仅只是把数字变成了矩阵而已. 代码例如 ...
 - hdu 3117 Fibonacci Numbers 矩阵快速幂+公式
		
斐波那契数列后四位可以用快速幂取模(模10000)算出.前四位要用公式推 HDU 3117 Fibonacci Numbers(矩阵快速幂+公式) f(n)=(((1+√5)/2)^n+((1-√5) ...
 - HDU 2842 (递推+矩阵快速幂)
		
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目大意:棒子上套环.第i个环能拿下的条件是:第i-1个环在棒子上,前i-2个环不在棒子上.每个 ...
 - hdu 2604 Queuing(矩阵快速幂乘法)
		
Problem Description Queues and Priority Queues are data structures which are known to most computer ...
 - HDU 5950 - Recursive sequence - [矩阵快速幂加速递推][2016ACM/ICPC亚洲区沈阳站 Problem C]
		
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 Farmer John likes to play mathematics games with ...
 - 2013长春网赛1009 hdu 4767 Bell(矩阵快速幂+中国剩余定理)
		
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4767 题意:求集合{1, 2, 3, ..., n}有多少种划分情况bell[n],最后结果bell[ ...
 - HDU 6470 Count 【矩阵快速幂】(广东工业大学第十四届程序设计竞赛 )
		
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6470 Count Time Limit: 6000/3000 MS (Java/Others) ...
 - HDU 6395 Sequence 【矩阵快速幂 && 暴力】
		
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6395 Sequence Time Limit: 4000/2000 MS (Java/Others) ...
 - HDU 5667 Sequence【矩阵快速幂+费马小定理】
		
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5667 题意: Lcomyn 是个很厉害的选手,除了喜欢写17kb+的代码题,偶尔还会写数学题.他找到 ...
 
随机推荐
- Jenkis  无法下载插件问题解决
			
在新机器上安装jenkins后,安装插件报如下错误 sun.security.provider.certpath.SunCertPathBuilderException: unable to find ...
 - Objective-C 点语法 成员变量的作用域 @property和@synthesize关键字 id类型
			
点语法 1.利用点语法替换set方法和get方法 方法调用 Student *stu = [Student new]; [stu setAge : 18]; int age = [stu age]; ...
 - 关于java获取网页内容
			
最近项目需求,做一些新闻站点的爬取工作.1.简单的jsoup爬取,静态页面形式: String url="a.atimo.cn";//静态页面链接地址Document doc = ...
 - leetcode-二叉树的层次遍历(Java)
			
给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层 ...
 - Window下部署MySql数据库
			
官网下载地址:https://dev.mysql.com/downloads/mysql/,MySQL Community(社区版) Server 5.7.21,下载完毕后,解压文件. (1)在mys ...
 - Stunnel客户端安装和配置
			
声明:本文并非原创,转自华为云帮助中心的分布式缓存服务(DCS)的用户指南. 本文以公网访问华为云分布式缓存服务的Redis缓存为示例,介绍Stunnel客户端在各操作系统下的安装和配置. Stunn ...
 - java面试整理
			
IO和NIO的区别 这是一个很常见的问题,如果单纯的只回答IO和NIO的区别,只能算及格.我个人觉得应该从以下几个方面回答: 1).IO简介, 2).TCP的三次握手,因为这也是两者的区别之一, 3) ...
 - 解决mac OS 10.9 下python 在terminal下崩溃的问题
			
Python 2.7.6 release candidate 1 was released on October 26, 2013. This is a 2.7 series bugfix relea ...
 - C Program基础-宏定义
			
写好c语言,漂亮的宏定义是非常重要的,我们在阅读别人工程时,往往能看到大量的宏定义,宏定义可以增加代码的可读性,也能增加代码的可移植性,一个好的宏定义甚至是一件艺术品.今天我们就来看看宏定义的方方面面 ...
 - 进程间通信:命名管道FIFO(2)
			
一.命名管道 如果我们想在不相关的进程之间交换数据,可以用FIFO文件来完成这项工作,它通常也被称为命名管道.命名管道是一种特殊类型的文件,它在文件系统中以文件名的形式存在,但是它的行为却和我们已经见 ...