2012-01-03 3 views
2

以下は問題ですInterviewstreet私は自分のサイトから助けを得ていないので、ここで質問してください。私はアルゴリズム/ソリューションに興味はありませんが、2番目の入力の例としてそれらのソリューションが理解できませんでした。問題文で指定されている2番目の入力と出力を理解するのに手伝ってください。サークルサマリー(30ポイント)インタビューストーリーパズル

サークル総和(30ポイント)

円に沿って座ってN子供があり、1,2,...,N時計回りに番号が付けられています。 ith子供には番号aiの書かれた紙があります。彼らは次のゲームをプレイします:

最初のラウンドでは、xという番号の子供は、彼の隣人の数の合計を加算します。

2番目のラウンドでは、時計回りの次の子は、隣人の数の合計などを数字に加算します。

ゲームはMラウンドが行われた後に終了します。

入力: 最初の行には、テストケースの数であるTが含まれています。 Tケースに従います。テストケースの最初の行には、2つのスペースで区切られた整数NMが含まれています。次の行は、Nの整数を含み、ithの数値はaiです。

出力: 各テストケースごとに、N個の整数を持つN行を出力します。 ith行のjthの整数には、ゲームが最初のラウンドを行う子供iで始まる場合、j番目の子供が終わる番号が含まれています。最後のテストケースを除く各テストケースの後に空白行を出力します。数字は本当に巨大なので、モジュロ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 

答えて

3

ここでは、第二のテストケースについて説明します。 (a、b、c)という表記を使用します。これは、子供が数字aを持ち、子供2が数字bを持ち、子供3が数字cを持つことを意味します。最初の位置は常に(1,2,1)です。

最初の子は、その隣人を合計する最初のものである場合、表は次のような状況(私はその2つの隣の数字を追加した子の前にアスタリスクを入れます)を通過:

(1、 (* 4,2,1)→(4,7 * 12)→(* 23,7,12)

(1,4,1) - >(* 11,4,6) - >(1、* 4,1) - >(* 11,4,6) - >(1,2,1) - > >(11、* 21,6)

最後に、第3子が最初に移動する場合:(1,2、* 4)→(* 7,2,4)→(7、* 13,4)→(7,13、* 24)である。 )

あなたが気づくように、2番目のケースへの出力は、そのように計算された3つのトリプルです。

希望に役立ちます。