以下是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,你不會有這個問題。 –