圆形求和(30分)InterviewStree Puzzle

时间:2012-01-03 10:58:27

标签: puzzle

以下是来自Interviewstreet的问题我没有从他们的网站获得任何帮助,所以在这里提问。我对算法/解决方案不感兴趣,但我不理解他们给出的解决方案作为他们的第二个输入的示例。任何人都可以帮我理解问题陈述中指定的第二个输入和输出。

圆总和(30分)

N个孩子坐在一个圆圈上,顺时针编号为1,2,...,Nith孩子有一张纸,上面写着ai。他们玩下面的游戏:

在第一轮中,编号为x的孩子会将他的邻居数量加起来。

在第二轮中,顺时针顺序的孩子将他的邻居数量的总和加上他的数字,依此类推。

比赛结束后M轮比赛结束。

输入: 第一行包含T,即测试用例的数量。 T个案件随之而来。测试用例的第一行包含两个空格分隔的整数NM。下一行包含N个整数,ith个数字为ai

输出: 对于每个测试用例,输出N行,每行有N个整数。 jth行上的ith整数包含第j个孩子在游戏以第一轮中的孩子i开始时结束的数字。在每个测试用例之后输出一个空白行,除了最后一个。由于数字可能非常大,因此以模1000000007为模型输出。

约束:

1 <= T <= 15
3 <= N <= 50
1 <= M <= 10^9
1 <= ai <= 10^9

示例输入:

2
5 1
10 20 30 40 50
3 4
1 2 1

示例输出:

80 20 30 40 50
10 60 30 40 50
10 20 90 40 50
10 20 30 120 50
10 20 30 40 100



23 7 12
11 21 6
7 13 24 

1 个答案:

答案 0 :(得分:3)

以下是第二个测试用例的说明。我将使用符号(a,b,c)表示孩子一个有数字a,孩子两个有数字b而孩子三有数字c。在开始时,位置始终是(1,2,1)。

如果第一个孩子是第一个将其邻居加起来的孩子,那么该表会经历以下情况(我会在刚刚添加了两个相邻数字的孩子面前放一个星号):

(1,2,1) - &GT;(* 4,2,1) - &GT;(4,7,1 *) - &GT;(4,7,* 12) - &GT;(* 23, 7,12)

如果第二个孩子是第一个搬家的孩子:

(1,2,1) - &GT;(1,* 4,1) - &GT;(1,4,* 6) - &GT;(* 11,4,6) - &GT;(11,* 21,6)

如果第三个孩子第一次搬家,那就去吧:

(1,2,1) - &GT;(1,2,* 4) - &GT;(* 7,2,4) - &GT;(7,* 13,4) - &GT;(7,13- * 24)

正如您所注意到第二种情况的输出正是以这种方式计算的三个三元组。

希望有所帮助。