hdu 1575-Tr A(矩阵快速幂)
来源:互联网 发布:淘宝联盟推广 编辑:程序博客网 时间:2024/05/23 10:31
address : http://acm.hdu.edu.cn/showproblem.php?pid=1575
Problem Description
A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973。
Input
数据的第一行是一个T,表示有T组数据。
每组数据的第一行有n(2 <= n <= 10)和k(2 <= k < 10^9)两个数据。接下来有n行,每行有n个数据,每个数据的范围是[0,9],表示方阵A的内容。
Output
对应每组数据,输出Tr(A^k)%9973。
Sample Input
2
2 2
1 0
0 1
3 99999999
1 2 3
4 5 6
7 8 9
Sample Output
2
2686
矩阵快速幂入门题 矩阵给出 直接算;
code:
#include <iostream>#include <bits/stdc++.h>using namespace std;#define Mod 9973struct node{ int m[10][10];}ans,a;node mul(node ans, node a, int n){ node p; memset(p.m, 0, sizeof(p.m)); for(int i = 0; i < n; i++) ///i行 for(int j = 0; j < n; j++) ///j列 for(int k = 0; k < n; k++) p.m[i][j] = (p.m[i][j]+ans.m[i][k]*a.m[k][j])%Mod; return p;}void solve(int n, int k){ memset(ans.m, 0, sizeof(ans.m)); for (int i=0; i<n; i++) { ans.m[i][i] = 1; } while (k) { if (k&1) ans = mul(ans, a, n); a = mul(a, a, n); k>>=1; }}int main(){ int N; cin>>N; while (N--) { int n,k; cin>>n>>k; for (int i=0 ;i<n; i++) { for (int j=0; j<n; j++) { cin>>a.m[i][j]; a.m[i][j] = a.m[i][j]%Mod; } } solve(n, k); int qt = 0; for (int i=0; i<n; i++) qt =(qt+ans.m[i][i])%Mod; cout<<qt<<endl; } return 0;}
阅读全文
0 0
- hdu 1575Tr A 矩阵快速幂
- HDU 1575 Tr A(矩阵快速幂)
- HDU 1575 Tr A (矩阵快速幂)
- HDU 1575-Tr A(矩阵快速幂)
- HDU 1575 Tr A (矩阵快速幂)
- HDU - 1575 Tr A(矩阵快速幂)
- hdu 1575 Tr A(矩阵快速幂)
- Hdu 1575 Tr A【矩阵快速幂】
- HDU 1575 Tr A (矩阵快速幂)
- 【HDU 1575】Tr A (矩阵快速幂)
- HDU 1575 Tr A 矩阵快速幂
- 【HDU 1575 Tr A】+ 矩阵快速幂
- HDU-1575-Tr A【矩阵快速幂】
- hdu 1575 TR A 矩阵快速幂
- HDU 1575 - Tr A(矩阵快速幂)
- HDU 1575 Tr A 矩阵快速幂
- HDU.1575 Tr A ( 矩阵快速幂)
- hdu 1575-Tr A(矩阵快速幂)
- GDI+
- 1821: [JSOI2010]Group 部落划分 Group
- 【CSS布局】定位详解(一)
- [Android6.0][RK3399] 关闭双击 Power 打开 Camera 功能
- 解决jQuery和其他库的冲突
- hdu 1575-Tr A(矩阵快速幂)
- POJ 2411 Mondriaan's Dream (状压DP)
- 平衡树 Number
- WisdomTool REST Client 工具的使用
- python | pandas | 移动窗口函数rolling
- VB打开工程名称冲突解决方法
- CSS3新特性(一)
- log算子 和dog 算子
- OSI七层模型