hdu 1575 矩阵快速幂模板题
来源:互联网 发布:网页美工课程标准 编辑:程序博客网 时间:2024/06/15 02:32
Tr A
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5008 Accepted Submission(s): 3738
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的内容。
每组数据的第一行有n(2 <= n <= 10)和k(2 <= k < 10^9)两个数据。接下来有n行,每行有n个数据,每个数据的范围是[0,9],表示方阵A的内容。
Output
对应每组数据,输出Tr(A^k)%9973。
Sample Input
22 21 00 13 999999991 2 34 5 67 8 9
Sample Output
22686
Author
xhd
Source
HDU 2007-1 Programming Contest
矩阵快速幂基础题吧
矩阵快速幂原理:http://www.cnblogs.com/yan-boy/archive/2012/11/29/2795294.html 二进制离散化思想,这里的除2其实就是>>2
要注意每次运算都要取模,避免高精度运算
这里的结构体运算符重载和构造初始化还要看下
把mat()构造初始化函数写在结构体里面,每次定义结构体变量,都会调用这个构造初始化函数,是真的很方便诶?
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 12;const int mod = 9973;struct mat { int s[maxn][maxn]; mat(){ //初始化!要注意乘法这里的重载界限是maxn的, //可能会在多组数据因为没有初始化曹成错误,但是n给出来了,加的都是n范围之内的,所以这个题结果没有影响 memset(s,0,sizeof(s)); }; mat operator * (const mat& c) { mat ans; for (int i = 0; i < maxn; i++) //矩阵乘法 for (int j = 0; j < maxn; j++) for (int k = 0; k < maxn; k++) ans.s[i][j] = (ans.s[i][j] + s[i][k] * c.s[k][j]) % mod; return ans; }}str;mat pow_mod(ll k) { if (k == 1) return str; mat a = pow_mod(k/2);//不能改 mat ans = a * a; if (k & 1) ans = ans * str; return ans;}int main() {// freopen("in.txt","r",stdin); int T,n,k; cin>>T; while(T--) { cin>>n>>k; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) scanf("%d", &str.s[i][j]); mat sub = pow_mod(k); ll ans = 0; for(int i = 0; i < n; i++) { ans += sub.s[i][i]; ans %= mod; } cout<<ans<<endl; } return 0;}
0 0
- hdu 1575 矩阵快速幂模板题
- hdu 2604 矩阵快速幂模板题
- hdu 1005 矩阵快速幂模板题
- 矩阵快速幂模板(1575)
- hdu 3070 Fibonacci && poj 1575 Tr A(矩阵快速幂模板题)
- 【矩阵快速幂】hdu 1575
- hdu-1575矩阵快速幂
- hdu 1575 矩阵快速幂
- hdu 1575(矩阵快速幂)
- hdu 1575 矩阵快速幂
- hdu 1575(矩阵快速幂)
- HDU 1575 矩阵快速幂
- hdu 1575(矩阵快速幂)
- hdu 1575 矩阵快速幂
- 矩阵快速幂模板
- 矩阵快速幂--模板
- 矩阵快速幂 模板
- 矩阵快速幂模板
- 视觉slam学习资料
- POJ专项——解题报告
- Moscow Subregional of NEERC, ACM ICPC 2016-2017 解题报告
- QTableView单行不允许编辑的方法
- 好用的 jQuery 消息提醒插件
- hdu 1575 矩阵快速幂模板题
- 快速排序解析
- 山高路远,我在路上
- C++中STL之map用法详解
- linux内核中的Oops
- 查看当前机器的位数
- LeetCode 70. Climbing Stairs
- C++ 中vector的重要特点——对象动态增长
- 有关语音识别方面资料的收集