1142 - Summing up Powers (II)
| Time Limit: 2 second(s) | Memory Limit: 32 MB |
Shanto is learning how to power up numbers and he found an efficient way to find kth power of a matrix. He was quite happy with his discovery. Suddenly his sister Natasha came to him and asked him to find the summation of the powers. To be specific his sister gave the following problem.
Let A be an n x n matrix. We define Ak = A * A * ... * A (k times). Here, * denotes the usual matrix multiplication. You are to write a program that computes the matrix A + A2 + A3 + ... + Ak.
Shanto smiled and thought that it would be an easy one. But after a while he found that it's tough for him. Can you help him?
Input
Input starts with an integer T (≤ 20), denoting the number of test cases.
Each case starts with two integers n (1 ≤ n ≤ 30) and k (1 ≤ k ≤ 109). Each of the next n lines will contain n non-negative integers (not greater than 10).
Output
For each case, print the case number and the result matrix. For each cell, just print the last digit. See the samples for more details.
Sample Input |
Output for Sample Input |
|
2 3 2 1 4 6 6 5 2 1 2 3 3 10 1 4 6 6 5 2 1 2 3 |
Case 1: 208 484 722 Case 2: 868 620 546 |

1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<stdlib.h>
5 #include<string.h>
6 #include<math.h>
7 #include<queue>
8 using namespace std;
9 typedef long long LL;
10 typedef struct node
11 {
12 int m[70][70];
13 node()
14 {
15 memset(m,0,sizeof(m));
16 }
17 } maxtr;
18 int ans[70][70];
19 void E(node *nn,int n);
20 maxtr ju(int n);
21 maxtr quick(node ju,int n,int m);
22 int main(void)
23 {
24 int i,j,k;
25 int n,m;
26 int s;
27 cin>>k;
28 for(s=1; s<=k; s++)
29 {
30 scanf("%d %d",&n,&m);
31 for(i=0; i<n; i++)
32 {
33 for(j=0; j<n; j++)
34 {
35 scanf("%d",&ans[i][j]);
36 ans[i][j]%=10;
37 }
38 }node aa;aa=ju(n);
39 aa=quick(aa,n,m);printf("Case %d:\n",s);
40 for(i=0;i<n;i++)
41 {
42 for(j=n;j<2*n;j++)
43 {
44 printf("%d",aa.m[i][j]);
45 }printf("\n");
46 }
47 }return 0;
48 }
49 void E(node *nn,int n)
50 {
51 int i,j,k;
52 for(i=0; i<n; i++)
53 {
54 for(j=0; j<n; j++)
55 {
56 if(i==j)
57 nn->m[i][j]=1;
58 else nn->m[i][j]=0;
59 }
60 }
61 }
62 maxtr ju(int n)
63 {
64 int i,j,k;
65 maxtr nn;
66 for(i=0; i<n; i++)
67 {
68 for(j=0; j<n; j++)
69 {
70 nn.m[i][j]=ans[i][j];
71 }
72 }
73 for(i=0; i<n; i++)
74 {
75 for(j=n; j<2*n; j++)
76 {
77 nn.m[i][j]=ans[i][j-n];
78 }
79 }
80 node cc;
81 E(&cc,n);
82 for(i=n; i<2*n; i++)
83 {
84 for(j=n; j<2*n; j++)
85 {
86 nn.m[i][j]=cc.m[i-n][j-n];
87 }
88 }return nn;
89 }
90 maxtr quick(node ju,int n,int m)
91 { node ee;
92
93 E(&ee,2*n);
94 int i,j,k;
95 int s;
96 while(m)
97 {
98 if(m&1)
99 {
100 node cc;
101 for(i=0; i<2*n; i++)
102 {
103 for(j=0; j<2*n; j++)
104 {
105 for(s=0; s<2*n; s++)
106 {
107 cc.m[i][j]=(ju.m[i][s]*ee.m[s][j]+cc.m[i][j])%10;
108 }
109 }
110 }
111 ee=cc;
112 }
113 node cc;
114 for(i=0; i<2*n; i++)
115 {
116 for(j=0; j<2*n; j++)
117 {
118 for(s=0; s<2*n; s++)
119 {
120 cc.m[i][j]=(ju.m[i][s]*ju.m[s][j]+cc.m[i][j])%10;
121 }
122 }
123 }
124 ju=cc;
125 m/=2;
126 }
127 return ee;
128 }
1142 - Summing up Powers (II)的更多相关文章
- lightOJ 1132 Summing up Powers(矩阵 二分)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1132 题意:给出n和m.求sum(i^m)%2^32.(1<=i<=n) ...
- lightoj1132—Summing up Powers (取膜技巧&&组合数应用)
题目链接:https://vjudge.net/problem/LightOJ-1132 题目意思:(1K + 2K + 3K + ... + NK) % 232 矩阵快速幂的题目一般都很短,这道题也 ...
- LightOJ 1132 Summing up Powers:矩阵快速幂 + 二项式定理
题目链接:http://lightoj.com/volume_showproblem.php?problem=1132 题意: 给定n.k,求(1K + 2K + 3K + ... + NK) % 2 ...
- LightOJ - 1132 Summing up Powers 矩阵高速幂
题目大意:求(1^K + 2^K + 3K + - + N^K) % 2^32 解题思路: 借用别人的图 能够先打表,求出Cnm,用杨辉三角能够高速得到 #include<cstdio> ...
- [伯努利数] poj 1707 Sum of powers
题目链接: http://poj.org/problem?id=1707 Language: Default Sum of powers Time Limit: 1000MS Memory Lim ...
- Leetcode 笔记 113 - Path Sum II
题目链接:Path Sum II | LeetCode OJ Given a binary tree and a sum, find all root-to-leaf paths where each ...
- Leetcode 笔记 117 - Populating Next Right Pointers in Each Node II
题目链接:Populating Next Right Pointers in Each Node II | LeetCode OJ Follow up for problem "Popula ...
- 函数式Android编程(II):Kotlin语言的集合操作
原文标题:Functional Android (II): Collection operations in Kotlin 原文链接:http://antonioleiva.com/collectio ...
- 统计分析中Type I Error与Type II Error的区别
统计分析中Type I Error与Type II Error的区别 在统计分析中,经常提到Type I Error和Type II Error.他们的基本概念是什么?有什么区别? 下面的表格显示 b ...
随机推荐
- 分布式事务(3)---强一致性分布式事务Atomikos实战
分布式事务(1)-理论基础 分布式事务(2)---强一致性分布式事务解决方案 分布式事务(4)---最终一致性方案之TCC 前面介绍强一致性分布式解决方案,这里用Atomikos框架写一个实战的dem ...
- 生产调优1 HDFS-核心参数
目录 1 HFDS核心参数 1.1 NameNode 内存生产配置 问题描述 hadoop-env.sh中配置 1.2 NameNode 心跳并发配置 修改hdfs-site.xml配置 1.3 开启 ...
- 学习java 7.21
学习内容: 模块使用 AWT是窗口框架 它从不同平台的窗口系统中抽取出共同组件,当程序运行时,将这些组件的创建和动作委托给程序所在的运行平台.简而言之,当使用AWT编写图形界面应用时,程序仅指定了界面 ...
- day11 四层负载均衡和http协议
day11 四层负载均衡和http协议 四层负载均衡和七层负载均衡的区别 四层和七层负载均衡的区别 四层负载均衡数据包在底层就进行了分发,而七层负载均衡数据包则是在最顶层进行分发.由此可以看出,七层负 ...
- javaIO——输入输出流
字节流与字符流 File类不支持对文件内容进行相关的操作,所有若要处理文件的内容,则需要通过流操作模式来完成. 流的基本操作步骤: Step1:根据文件路径创建File类对象. Step2:根据字节流 ...
- my37_MGR流控对数据库性能的影响以及MGR与主从的性能对比
mysql> show variables like 'group_replication_flow_control_applier_threshold'; +----------------- ...
- contrller层的编码设设计流程以及详细配置
/** 实际开发中遵循一个规律:自己写的类使用注解,系统提供的类使用配置文件 1.书写controller类----->配置springmvc.xml-------->配置web ...
- 如何用Serverless让SaaS获得更灵活的租户隔离和更优的资源开销
关于SaaS和Serverless,相信关注我的很多读者都已经不陌生,所以这篇不会聊它们的技术细节,而将重点放在SaaS软件架构中引入Serverless之后,能给我们的SaaS软件带来多大的收益. ...
- show_slave_status参数详解
#这个是指slave 连接到master的状态 #当前在等待主发送事件 Slave_IO_State: Waiting for master to send event #master地址 Maste ...
- 编译工具ant部署
目录 一.环境准备 二.安装 三.使用验证 一.环境准备 当前环境:centos7.3一台 软件版本:ant-1.9 部署目录:/usr/local/ant yum依赖 yum -y java-1.8 ...