Tr A

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

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
 
Author
xhd
 
Source
 
为了学其他知识,先学习矩阵来打个基础。
这道题,不难,是个模板题。
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. using namespace std;
  6.  
  7. struct node
  8. {
  9. __int64 mat[][];
  10. }hxl,tom;
  11.  
  12. void make_first(node *cur,int n)
  13. {
  14. int i,j;
  15. for(i=;i<=n;i++)
  16. for(j=;j<=n;j++)
  17. if(i==j)
  18. cur->mat[i][j]=;
  19. else cur->mat[i][j]=;
  20. }
  21.  
  22. struct node cheng(node cur,node now,int n)
  23. {
  24. node ww;
  25. int i,j,k;
  26. memset(ww.mat,,sizeof(ww.mat));
  27. for(i=;i<=n;i++)
  28. for(k=;k<=n;k++)
  29. if(cur.mat[i][k])
  30. {
  31. for(j=;j<=n;j++)
  32. if(now.mat[k][j])
  33. {
  34. ww.mat[i][j]+=cur.mat[i][k]*now.mat[k][j];
  35. if(ww.mat[i][j]>=)
  36. ww.mat[i][j]%=;
  37. }
  38. }
  39. return ww;
  40. }
  41.  
  42. __int64 power_sum2(int n,int k)
  43. {
  44. int i;
  45. __int64 sum=;
  46. make_first(&tom,n);
  47. while(k)
  48. {
  49. if(k&)
  50. {
  51. tom=cheng(tom,hxl,n);
  52. }
  53. k=k>>;
  54. hxl=cheng(hxl,hxl,n);
  55. }
  56. for(i=;i<=n;i++)
  57. sum=(sum+tom.mat[i][i])%;
  58. return sum;
  59. }
  60.  
  61. int main()
  62. {
  63. int T,n,k,i,j;
  64. __int64 sum;
  65. while(scanf("%d",&T)>)
  66. {
  67. while(T--)
  68. {
  69. scanf("%d%d",&n,&k);
  70. for(i=;i<=n;i++)
  71. for(j=;j<=n;j++)
  72. scanf("%I64d",&hxl.mat[i][j]);
  73. sum=power_sum2(n,k);
  74. printf("%I64d\n",sum);
  75. }
  76. }
  77. return ;
  78. }

HDU 1575 Tr A----矩阵相乘题。的更多相关文章

  1. HDU.1575 Tr A ( 矩阵快速幂)

    HDU.1575 Tr A ( 矩阵快速幂) 点我挑战题目 题意分析 直接求矩阵A^K的结果,然后计算正对角线,即左上到右下对角线的和,结果模9973后输出即可. 由于此题矩阵直接给出的,题目比较裸. ...

  2. HDU 1575 Tr A(矩阵高速幂)

    题目地址:HDU 1575 矩阵高速幂裸题. 初学矩阵高速幂.曾经学过高速幂.今天一看矩阵高速幂,原来其原理是一样的,这就好办多了.都是利用二分的思想不断的乘.仅仅只是把数字变成了矩阵而已. 代码例如 ...

  3. hdu 1575 Tr A(矩阵高速电源输入)

    Tr A Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  4. HDU 1575 Tr A 【矩阵经典2 矩阵快速幂入门】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1575 Tr A Time Limit: 1000/1000 MS (Java/Others)    Me ...

  5. hdu 1575 Tr A (二分矩阵)

    Tr A Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. hdu 1575 Tr A

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1575 Tr A Description A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和), ...

  7. hdu 1575 Tr A (矩阵快速幂入门题)

    题目 先上一个链接:十个利用矩阵乘法解决的经典题目 这个题目和第二个类似 由于矩阵乘法具有结合律,因此A^4 = A * A * A * A = (A*A) * (A*A) = A^2 * A^2.我 ...

  8. hdu 1575 Tr A(矩阵快速幂)

    今天做的第二道矩阵快速幂题,因为是初次接触,各种奇葩错误整整调试了一下午.废话不说,入正题.该题应该属于矩阵快速幂的裸题了吧,知道快速幂原理(二进制迭代法,非递归版)后,剩下的只是处理矩阵乘法的功夫了 ...

  9. hdu 1575 Tr A(矩阵快速幂乘法优化算法)

    Problem Description A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%. Input 数据的第一行是一个T,表示有T组数据. 每组数据的第一行有n ...

随机推荐

  1. S2-052复现过程(附POC利用)

    漏洞编号:CVE-2017-9805(S2-052) 影响版本:Struts 2.5 - Struts 2.5.12 漏洞概述:问题出现在struts2-rest-plugin插件XStreamHan ...

  2. leetcode-695-Max Area of Island(BFS)

    题目描述: Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land ...

  3. CentOS 7 安装程序介绍

    (一).引导菜单 使用 UEFI 引导 Install CentOS Linux 7 选择此选项开始在你的计算机系统中使用图形安装程序安装 CentOS 7 Test this media & ...

  4. [转] Nexus OSS 3.xx 体验

    [From] https://blog.csdn.net/qq250782929/article/details/51605965 Nexus Manager OSS 3.0 —Maven Repos ...

  5. c#中异步编程

    异步是现实生活中的很多现象的一种抽象.比如分工合作在很多时间段就是异步合作.异步中也一般要涉及委托方法.c#有3种模式的异步编程:异步模式,基于事件的异步模式,基于任务的异步模式(TAP). 一.   ...

  6. [Xamarin] 產生專案的AndroidManifest.xml (转帖)

    紀錄一下 Xamarin 如何開啟 AndroidManifest.xml,因為這跟權限有關係,每個Android App幾乎都要設定 每次都想Add File 去增加但是其實是不對的 工具上面不管是 ...

  7. ELK系列~Fluentd对大日志的处理过程~16K

    Fluentd是一个日志收集工具,有输入端和输出端的概念,前者主要是日志的来源,你可以走多种来源方式,http,forward,tcp都可以,后者输出端主要指把日志进行持久化的过程,你可以直接把它持久 ...

  8. PHP之string之chr()函数使用

    chr (PHP 4, PHP 5, PHP 7) chr - Return a specific character chr - 返回指定的字符 Description string chr ( i ...

  9. Win10双网卡不双待攻略

    声明:本文与个人的技术兴趣毫无关系,只是因为有迫不得已的实际需求,才不得不想办法.所谓"艰难困苦,玉汝于成",大概就是这个道理.(PS:标题我没有写错,不是双网卡双待,就是双网卡但 ...

  10. concurrency基础

    Runnable 一个执行任务,没有返回值,也不能抛出受检查异常 Callable 一个执行任务有返回值,也能抛出受检查异常 Future 表示执行任务的生命周期,任务的生命周期为:创建,提交,开始, ...