Problem Description

假设你有一个矩阵,有这样的运算A^(n+1) = A^(n)*A (*代表矩阵乘法)
现在已知一个n*n矩阵A,S = A+A^2+A^3+...+A^k,输出S,因为每一个元素太大了,输出的每个元素模10

Input

先输入一个T(T<=10),每组一个n,k(1<=n<=30, k<=1000000)

Output

输出一个矩阵,每个元素模10(行末尾没有多余空格)

Sample Input

  1. 1
  2. 3 2
  3. 0 2 0
  4. 0 0 2
  5. 0 0 0

Sample Output

  1. 0 2 4
  2. 0 0 2
  3. 0 0 0
  4.  
  5. 解法:矩阵的等比求和,知道这个就用模版写
  1. #include<bits/stdc++.h>
  2. #define clr(x) memset(x,0,sizeof(x))
  3. #define LL long long
  4. using namespace std;
  5. #define INF 0x3f3f3f3f
  6. typedef long long ll;
  7. const int N= +;
  8. struct Matrix
  9. {
  10. int m[N][N];
  11. };
  12. Matrix I;
  13. int n,k,M;
  14.  
  15. Matrix add(Matrix a,Matrix b)
  16. {
  17. Matrix c;
  18. for(int i=;i<n;i++)
  19. for(int j=;j<n;j++)
  20. c.m[i][j]=(a.m[i][j]+b.m[i][j])%M;
  21. return c;
  22. }
  23.  
  24. Matrix multi(Matrix a,Matrix b)
  25. {
  26. Matrix c;
  27. for(int i=;i<n;i++){
  28. for(int j=;j<n;j++){
  29. c.m[i][j]=;
  30. for(int k=;k<n;k++)
  31. c.m[i][j]=(c.m[i][j]+a.m[i][k]*b.m[k][j])%M;
  32. }
  33. }
  34. return c;
  35. }
  36. Matrix power(Matrix A,ll n)
  37. {
  38. Matrix ans=I;
  39. while(n){
  40. if(n&)
  41. ans=multi(ans,A);
  42. A=multi(A,A);
  43. n>>=;
  44. }
  45. return ans;
  46. }
  47.  
  48. Matrix sum(Matrix A,ll k)
  49. {
  50. if(k==) return A;
  51. Matrix t=sum(A,k/);
  52. Matrix cur=power(A,k/+(k&));
  53. t=add(t,multi(t,cur));
  54. if(k&) t=add(t,cur);
  55. return t;
  56. }
  57.  
  58. int main()
  59. {
  60. int T;
  61. ios::sync_with_stdio(false),cin.tie(),cout.tie();
  62. while(cin>>T){
  63. while(T--){
  64. cin>>n>>k;
  65. M=;
  66. Matrix A;
  67. for(int i=;i<n;i++){
  68. for(int j=;j<n;j++){
  69. cin>>A.m[i][j];
  70. A.m[i][j]%=M;
  71. }
  72. I.m[i][i]=;
  73. }
  74. Matrix ans=sum(A,k);
  75. for(int i=;i<n;i++){
  76. for(int j=;j<n;j++){
  77. if(j+!=n) cout<<ans.m[i][j]<<" ";
  78. else cout<<ans.m[i][j]<<endl;
  79. }
  80. }
  81. }
  82. }
  83. return ;
  84. }

华东交通大学2017年ACM“双基”程序设计竞赛 1005的更多相关文章

  1. 华东交通大学2017年ACM“双基”程序设计竞赛 1009

    Problem Description MDD随机生成了n(n<le5)个随机数x(x<=1e9),这n个随机数排成一个序列,MDD有q(q<=le5)个询问,每个询问给你一个a,问 ...

  2. 华东交通大学2017年ACM“双基”程序设计竞赛 1003

    Problem Description 有两个球在长度为L的直线跑道上运动,两端为墙.0时刻小球a以1m/s的速度从起点向终点运动,t时刻小球b以相同的速度从终点向起点运动.问T时刻两球的距离.这里小 ...

  3. 华东交通大学2017年ACM“双基”程序设计竞赛 1002

    Problem Description 一天YZW参加了学校组织交际舞活动,活动的开始活动方分别给男生和女生从1-n进行编号,按照从小到大顺时针的方式进行男女搭档分配,相同编号的男女组合成一对,例如一 ...

  4. 华东交通大学2017年ACM“双基”程序设计竞赛 1008

    Problem Description 长度为 n 的序列,把它划分成两段非空的子序列,定义权值为:两段子序列的最大值的差的绝对值.求可能的最大的权值.数据范围:2 <= n <= 10^ ...

  5. 华东交通大学2017年ACM“双基”程序设计竞赛 1010

    Problem Description 定义操作:将数 n 变为 f(n) = floor(sqrt(n)).即对一个数开平方后,再向下取整.如对 2 进行一次操作,开平方再向下取整, 1.41421 ...

  6. 华东交通大学2017年ACM“双基”程序设计竞赛 1001

    Problem Description 最近流行吃鸡,那就直接输出一行"Winner winner ,chicken dinner!"(没有双引号)模板代码:#include &l ...

  7. 华东交通大学2016年ACM“双基”程序设计竞赛 1005

    Problem Description 最近侯ry感觉自己在数学方面的造诣不忍直视:他发现他的学习速率呈一个指数函数递增,疯狂的陷入学习的泥潭,无法自拔:他的队友发现了他的学习速率y=e^(b*lna ...

  8. 华东交通大学2015年ACM“双基”程序设计竞赛1005

    Problem E Time Limit : 3000/2000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Sub ...

  9. 华东交通大学2018年ACM“双基”程序设计竞赛 C. 公式题 (2) (矩阵快速幂)

    题目链接:公式题 (2) 比赛链接:华东交通大学2018年ACM"双基"程序设计竞赛 题目描述 令f(n)=2f(n-1)+3f(n-2)+n,f(1)=1,f(2)=2 令g(n ...

随机推荐

  1. ACM学习历程—HDU5521 Meeting(图论)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5521 学习菊苣的博客,只粘链接,不粘题目描述了. 题目大意就是一个人从1开始走,一个人从n开始走.让最 ...

  2. Hough变换原理

    Hough变换原理 一.简单介绍 Hough变换是图像处理中从图像中识别几何形状的基本方法之一.Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的 ...

  3. [转]阮一峰:理解RESTful架构

    作者: 阮一峰 日期: 2011年9月12日 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通 ...

  4. powermock, 强力模拟

    1. powermock是基于mockito或者easymock,TestNG之上的mock: 2. 提供了对于静态函数,私有函数的mock 3. 下载地址:https://github.com/po ...

  5. bzoj 2044 三维导弹拦截——DAG最小路径覆盖(二分图)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2044 还以为是CDQ.发现自己不会三维以上的…… 第一问可以n^2.然后是求最长不下降子序列 ...

  6. 【转】 Pro Android学习笔记(二八):用户界面和控制(16):GridLayout

    网格布局:GridLayout 我个人觉得GridLayout的设计还不很完善,每个网格的大小,由填充的cell决定,即默认是wrap很容易整个GridLayout超出屏幕.下面是一个例子: < ...

  7. jQuery 文档操作 - html() 方法

    1.转自:http://www.w3school.com.cn/jquery/manipulation_html.asp 设置所有 p 元素的内容: <html> <head> ...

  8. CSS是什么?W3C是什么?W3C盒子与IE盒子的区别?

    (1)层叠样式(Cascading Style Sheets, CSS)是用来表现HTML或XML文本样式的语言.   (2)W3C推荐规范(World Wide Web Consortium,W3C ...

  9. ABCD四个人说真话的概率都是1/3。假如A声称B否认C说D是说谎了,那么D说过的那句话真话的概率是多少

    ABCD四个人说真话的概率都是1/3.假如A声称B否认C说D是说谎了,那么D说过的那句话 真话的概率是多少 记"A声称B否认C说D说谎"为X,那么由贝叶斯公式,所求的 P(D真)P ...

  10. Learning Python 005 字符串和编码

    Python 字符串和编码 介绍 计算机是美国人发明的,最早只有127个字母被编码到计算机,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122. 处理中文一个字节显然 ...