以下是Interviewstreet的问题有人可以给我一些测试用例和输出。我的解决方案在所有测试用例的时间限制内,但给出了错误的答案。算法拼图的测试用例
圈总和(30分)
有N
孩子沿着圆圈坐着,编号顺时针1,2,...,N
。 ith
孩子的一张纸上写着一个号码ai
。他们玩下面的游戏:
在第一轮中,编号为x
的孩子在他的数字中增加了他的邻居的数量总和。
在第二轮中,顺时针顺序的下一个孩子将其邻居的数量总和加到他的数字上,依此类推。
游戏结束后M
已发挥。
输入: 第一行包含T
,测试用例的数量。 T
个案如下。测试用例的第一行包含两个空间分离的整数N
和M
。下一行包含N
整数,ith
号码为ai
。
输出: 对于每个测试案例,输出N行,每行有N个整数。 ith
行上的jth
整数包含第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
你假设ai = 10^9和m = 10^9,n太小,这意味着最后ai约为10^18。和64位数是足够的,因为64位符号数等于2^63 = 8 *(2^10)^ 6 = 8 * 10^18 –
最大可能的总和:1000000006 + 1000000006 + 1000000006 = 3000000018> 2147483647 = 2^31 - 1(带符号32位数字的最大值),这意味着它将环绕到-1294967278。如果你反而((1000000006 + 1000000006)%1000000007 + 1000000006)%1000000007,你不会有这个问题。 –