HDU
来源:互联网 发布:淘宝售后处理规则 编辑:程序博客网 时间:2024/06/05 05:05
Tr A
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5372 Accepted Submission(s): 4030
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
矩阵快速幂
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int n,k,T,m,mod = 9973,ans;struct node//该结构体代表一个矩阵{ int a[15][15]; friend node operator * (node a,node b) { node c; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { c.a[i][j] = 0; for(int k=0;k<n;k++) c.a[i][j] += a.a[i][k]*b.a[k][j],c.a[i][j]%=mod; } } return c; }}A;node qkm(node A,int m){ node ans,base = A; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(i==j) ans.a[i][j] = 1; else ans.a[i][j] = 0; } } while(m) { if(m%2) ans = ans * base; base = base * base; m/=2; } return ans;}int main(){ scanf("%d",&T); while(T--) { scanf("%d%d",&n,&k); m = ans = 0; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { scanf("%d",&A.a[i][j]); } } A = qkm(A,k); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(i==j) ans+=A.a[i][j],ans%=mod; } } printf("%d\n",ans); } return 0;}
阅读全文
0 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- JAVA第七章集合(四)
- [leetcode]104. Maximum Depth of Binary Tree@Java解题报告
- mysql 在 centos 上安装
- 基于opencv的图像分析,PID算法,串口发送,单片机接收,输出脉冲继而控制步进电机转动
- fast-rcnn 详解
- HDU
- SSH框架搭建(Spring-Strtus-Hibernate)
- C开发lua模块(二) --- 操作table和调用lua函数
- 2017"百度之星"程序设计大赛
- 简单看下Java 的内存及其共享
- 遇到的面试题(附网上参考答案)
- python-pandas的基本用法04
- 海量数据分析问题总结
- 【LeetCode】149. Max Points on a Line