[HDOJ1575]Tr A

Tr A

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3409    Accepted Submission(s): 2542

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

很露骨的矩阵快速幂,代码如下:

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 #include <cmath>
 5
 6 using namespace std;
 7
 8 #define MOD 9973
 9 #define MAXN 15
10
11 typedef struct MAT
12 {
13     int d[MAXN][MAXN];
14     int r, c;
15     MAT()
16     {
17         r = c = 0;
18         memset(d, 0, sizeof(d));
19     }
20 }MAT;
21
22 MAT mul(MAT m1, MAT m2, int mod)
23 {
24     MAT ans = MAT();
25     ans.r = m1.r;
26     ans.c = m2.c;
27     for(int i = 1; i <= m1.r; i++)
28     {
29         for(int j = 1; j <= m2.r; j++)
30         {
31             if(m1.d[i][j])
32             {
33                 for(int k = 1; k <= m2.c; k++)
34                 {
35                     ans.d[i][k] = (ans.d[i][k] + m1.d[i][j] * m2.d[j][k]) % mod;
36                 }
37             }
38         }
39     }
40     return ans;
41 }
42
43 MAT quickmul(MAT m, int n, int mod)
44 {
45     MAT ans = MAT();
46     for(int i = 1; i <= m.r; i++)
47     {
48         ans.d[i][i] = 1;
49     }
50     ans.r = m.r;
51     ans.c = m.c;
52     while(n)
53     {
54         if(n & 1)
55         {
56             ans = mul(m, ans, mod);
57         }
58         m = mul(m, m, mod);
59         n >>= 1;
60     }
61     return ans;
62 }
63
64 int main()
65 {
66     int T;
67     scanf("%d", &T);
68     while(T--)
69     {
70         int n, k;
71         scanf("%d %d", &n, &k);
72         MAT A = MAT();
73         A.r = n, A.c = n;
74         for(int i = 1; i <= n; i++)
75         {
76             for(int j = 1; j <= n; j++)
77             {
78                 scanf("%d", &A.d[i][j]);
79             }
80         }
81         A = quickmul(A, k, MOD);
82         int ans = 0;
83         for(int i = 1; i <= n; i++)
84         {
85             ans += A.d[i][i];
86         }
87         printf("%d\n", ans % MOD);
88     }
89     return 0;
90 }

时间: 2024-10-25 22:05:44

[HDOJ1575]Tr A的相关文章

点击modal确定键后删除tr

做第一个笔记,关于 “书单”.2016-09-03关于一个表格调用modal后,在点击表格中的删除按钮弹出modal,点击确定删除后,将一整行tr 删除的功能. 以下内容为table,表示为某班学生. 1 <table class="table table-bordered Stu-tab " id="Stu-tab"> 2 <tr > <td colspan="7" align="left"&g

SHELL STUDY....tr的用法

一般我们使用tr来做字符串的替换,或者删除指定的字符串 tr的语法如下: tr [OPTION]... SET1 [SET2] -c, -C, --complement first complement SET1 将非SET1中的字符替换为SET2 [[email protected] ~]$ echo "lubinsu" | tr -c "l" "A" lAAAAAAA -d, --delete delete characters in SET

tr th td

<table>     <caption></caption>     <thead>         <tr>             <th></th>         </tr>     </thead>     <tbody>         <tr>             <td></td>         </tr>     

tr 简单使用

tr 替换 1.用来计算求和 [[email protected] 桌面]# seq 1 100 |echo "$[`tr "\n" "+"` 0]"50504pc09 桌面]# seq 1 2 100 |echo "$[`tr "\n" "+"` 0]"2500[[email protected] 桌面]# seq 0 2 100 |echo "$[`tr "\n&

table 如何给tr border颜色

border-collapse属性值 说明 separate 默认值,边框分开,不合并 collapse 边框合并,如果相邻,则共用一个边框 table,th,td{border:1px solid gray} table{border-collapse:collapse;} 只有collapse才能设置border颜色 如下css为 .linktable{border-collapse: collapse;}.linktable tr{border-bottom: 1px solid #eee

点击tr实现选择checkbox功能,点击checkobx的时候阻止冒泡事件, jquery给checkbox添加checked属性或去掉checked属性不能使checkobx改变状态

给tr添加点击事件,使用find方法查找tr下的所有层级的元素,children只查找下一层级的元素,所以使用find.find的返回值为jquery对象,在这个项目中不知道为什么使用jquery给checkbox添加checked属性或去掉checked属性不能使checkobx改变状态,所以我就把jquery对象转换为DOM对象,怎么转呢?jquery对象[0]或者get(0)就转换成DOM对象,然后直接.checked返回true或false就可以判断checkbox是否选中了.然后判断状

tr用法

tr用来从标准输入中通过替换或删除操作进行字符转换.tr主要用于删除文件中控制字符或进行字符转换.使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换.tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始-c 用字符串1中字符集的补集替换此字符集,要求字符集为 ASCII.-d 删除字符串1中所有输入字符.-s删除所有重复出现字符序列,只保留第一个:即将重复出现字符串压缩为一个字符串\ a  Ctrl-G 铃声  \ 0 0 7\ b  Ctrl-H 退格符

tr命令的使用及相关练习题

tr命令相关选项: tr-转换或删除字符 常用选项: -c:取字符集的补集 -d:删除匹配的指定字符集中的字符 -s:把连续重复的字符以单独一个字符表示 -t:先删除第一字符集较第二字符集多出的字符 \\:反斜杠 \a:响铃 \b:退格 \n:换行 \r:回车 [:alnum:] :所有的字母和数字                                                 [:alpha:] :所有的字母                                   

几个常用文本处理小工具tr ,wc,cut,sort,uniq用法详解

几个文本处理的小工具:tr ,wc,cut,sort,uniq 1. tr命令可以对来自标准输入的字符进行替换.压缩和删除.它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大. 语法:tr 选项  SET1 SET2 -c或--complerment:取代所有不属于第一字符集的字符(就是补集): -d或--delete:删除所有属于第一字符集的字符: -s或--squeeze-repeats:把连续重复的字符以单独一个字符表示: -t或--truncate-set1:先删除第