HDU 1575 Tr A(矩阵快速幂)
2016-04-21 09:22
513 查看
Tr A
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4118 Accepted Submission(s): 3072
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
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4118 Accepted Submission(s): 3072
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
#include <iostream> #include <string.h> #include <stdlib.h> #include <stdio.h> #include <algorithm> #include <math.h> using namespace std; const int mod=9973; struct Node { int a[25][25]; }; int n,m,x,y,k,t; Node multiply(Node a,Node b) { Node c; memset(c.a,0,sizeof(c.a)); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(!a.a[i][j]) continue; for(int k=0;k<n;k++) { (c.a[i][k]+=(a.a[i][j]*b.a[j][k])%mod)%=mod; } } } return c; } Node get(Node a,int x) { Node c; memset(c.a,0,sizeof(c.a)); for(int i=0;i<n;i++) c.a[i][i]=1; for(x;x;x>>=1) { if(x&1) c=multiply(c,a); a=multiply(a,a); } return c; } int main() { scanf("%d",&t); while(t--) { Node a; memset(a.a,0,sizeof(a.a)); scanf("%d%d",&n,&k); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { scanf("%d",&a.a[i][j]); } } a=get(a,k); int sum=0; for(int i=0;i<n;i++) { (sum+=a.a[i][i])%=mod; } printf("%d\n",sum); } return 0; }
相关文章推荐
- JSP9大内置对象
- nginx下载及配置
- UnityShader学习实践(hsv转rbg)
- 关于C# winform 程序退出说明
- Android 基础(一)、androidmanifest.xml
- HDU 1575 Tr A(矩阵快速幂)
- 将配置绑定为对象[上篇]
- vim配置(vimplus)
- Android编程实用代码合集
- Eclipse+CDT使用个人经验
- 上机时间项目——项目3-指向学生类的指针
- Problem 1009
- UITabBarController(底部控制栏)
- 无废话ExtJs 入门教程七[登陆窗体Demo:Login]
- 关于用boundingRectWithSize计算label自适应高度那点事
- ExtJs 中的 Ext.QuickTips.init()
- Java读写Properties配置文件
- TestNG 学习总结 - 测试结果报告 - 自定义记录器(十六)
- Project Web App Feature无法开启的解决方案
- 第8周项目1 数组做数据成员 工资类(2)