[矩阵快速幂]hdu1575 Tr A
来源:互联网 发布:数据库三大范式详解 编辑:程序博客网 时间:2024/05/17 04:28
hdu1575 Tr A
题意:
求矩阵A的k次幂,主对角线之和%9973
思路:
裸的矩阵快速幂,具体见模板
代码:
/************************************************************** Problem: HDU_1575 User: soundwave Language: C++ Result: Accepted Time: 0ms Memory: 1576KB****************************************************************///#pragma comment(linker, "/STACK:1024000000,1024000000")#include <iostream>#include <stdio.h>#include <vector>using namespace std;typedef vector<int> Vint;typedef vector<Vint> VVint;typedef __int64 LL;const int MOD = 9973;//矩阵乘法VVint calc(VVint &A, VVint &B){ VVint C(A.size(),Vint(A.size())); for(int i=0; i<A.size(); i++) for(int j=0; j<B[0].size(); j++) for(int k=0; k<B.size(); k++) C[i][j] = (C[i][j] + (A[i][k]*B[k][j])) % MOD; return C;}//二分快速幂VVint my_pow(VVint &A, int c){ VVint B(A.size(),Vint(A.size())); for(int i=0; i<A.size(); i++) B[i][i] = 1; if(c==1) return A; while(c>0){ if(c&1) B = calc(B,A); A = calc(A,A); c>>=1; } return B;}int main(){ int t, n, k; scanf("%d", &t); while(t-->0){ scanf("%d%d", &n, &k); VVint A(n,Vint(n)); for(int i=0; i<n; i++) for(int j=0; j<n; j++) scanf("%d", &A[i][j]); A = my_pow(A,k); LL re=0; for(int i=0; i<n; i++) re += A[i][i]; printf("%I64d\n", re%MOD); } return 0;}
0 0
- hdu1575 Tr A (矩阵快速幂)
- Hdu1575 - Tr A - 矩阵快速幂
- HDU1575-Tr A(矩阵快速幂)
- hdu1575 Tr A(矩阵快速幂)
- HDU1575 Tr A 【矩阵快速幂】
- HDU1575 Tr A(矩阵快速幂)
- hdu1575 Tr A 矩阵快速幂
- hdu1575 Tr A(矩阵快速幂)
- hdu1575 Tr A (矩阵快速幂)
- [矩阵快速幂]hdu1575 Tr A
- hdu1575 Tr A(矩阵快速幂)
- (矩阵快速幂)hdu1575 Tr A
- HDU1575 Tr A【矩阵快速幂】
- hdu1575 Tr A(矩阵快速幂模板题)
- hdu1575 Tr A(矩阵快速幂模板题)
- HDU1575--Tr A(矩阵快速幂模板)
- hdu1575 Tr A(矩阵快速幂)题解
- HDU1575 Tr A 矩阵应用
- 面向对象
- 69. Sqrt(x)
- NSTimer的用法
- 课堂整理(三)
- JAVA/C++ 堆栈详解
- [矩阵快速幂]hdu1575 Tr A
- oozie server系统时钟偏差导致sqoop报错
- PAT 最大子列和问题
- C++之函数
- C语言中memset函数详解
- 异常
- 设置socket为非阻塞
- SGU 275 - To xor or not to xor 按位贪心 + XOR性质
- Xamarin Android安装教程(2016最新亲测安装版)