Tr A (矩阵快速幂(模板))
来源:互联网 发布:淘宝货到付款怎样开通 编辑:程序博客网 时间:2024/06/05 20:33
【题目来源】:https://vjudge.net/problem/HDU-1575
【题意】
中问题意不在解释。
【思路】
很水的一个快速幂题,而且又是给出了一个矩阵,所以想到矩阵快速幂。。
然而,并没有在敲完代码后直接过,因为在代码里我用到了两个矩阵:ans和base,他们俩的含义就和快速幂的一样,但是呢,本题是T组输入,然后我把他们俩用结构体定义在了外面,base是一直在更新(因为是把矩阵直接输入的),但是ans没有清0,所以又浪费了一点时间,,
【代码】
#include<set>#include<map>#include<stack>#include<cmath>#include<queue>#include<cstdio>#include<string>#include<cstring>#include<iostream>#include<limits.h>#include<algorithm>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int mod=9973;typedef unsigned long long ll;typedef long long LL;int n,k;struct mat{ int a[14][14]; mat() { mem(a,0); for(int i=1; i<=10; i++) a[i][i]=1; }} base;mat operator*(mat s,mat t){ mat r; mem(r.a,0); for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) for(int p=1; p<=n; p++) { r.a[i][j]=r.a[i][j]+s.a[i][p]*t.a[p][j]; if(r.a[i][j]>=mod) r.a[i][j]%=mod; } return r;}void pow_mat(mat &ans){ while(k) { if(k&1) ans=ans*base; base=base*base; k>>=1; }}int main(){ int T; scanf("%d",&T); while(T--) { mat ans; scanf("%d%d",&n,&k); for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) scanf("%d",&base.a[i][j]); pow_mat(ans); int sum=0; for(int i=1; i<=n; i++) { sum+=ans.a[i][i]; if(sum>=mod) sum%=mod; } printf("%d\n",sum); }}
阅读全文
0 0
- Tr A (矩阵快速幂(模板))
- hdu1575 Tr A(矩阵快速幂模板题)
- hdu1575 Tr A(矩阵快速幂模板题)
- HDU1575--Tr A(矩阵快速幂模板)
- hdoj 1575 Tr A(矩阵快速幂,模板题)
- hdu1575 Tr A(矩阵快速幂)
- HDU1575 Tr A(矩阵快速幂)
- hdu1575 Tr A(矩阵快速幂)
- hdu1575 Tr A (矩阵快速幂)
- Tr A(矩阵乘法快速幂)
- hdu1575 Tr A(矩阵快速幂)
- Tr A(矩阵快速幂)
- Tr A (矩阵快速幂)
- (矩阵快速幂)hdu1575 Tr A
- Tr A(矩阵快速幂)
- hdu 3070 Fibonacci && poj 1575 Tr A(矩阵快速幂模板题)
- hdu 1575 Tr A(矩阵乘法快速求幂)
- 杭电1575-Tr A(矩阵快速幂)
- File创建的操作
- 学习Java过程时慕课网上的知识总结(自用)
- spring框架简介
- (1) PHP 使用 PDO 连接ORACLE、MYSQL、和SQLSERVER
- 找到一本不错的Linux电子书,附《Linux就该这么学》章节目录
- Tr A (矩阵快速幂(模板))
- 欢迎使用CSDN-markdown编辑器
- fragment中添加fragment与activity中添加fragment的不同
- Struts2工作原理详解,从Struts2的角度来理解MVC模型
- 计算两点间的距离(HDU)
- 城市浅谈
- cocos 3d基础教程
- 淘淘商城系列——KindEditor富文本编辑器的使用
- leetcode.485. Max Consecutive Ones