サークルの合計:
時計回りに1,2、...、Nの番号が付けられたN人の子供が円に沿って座っています。i番目の子供には、番号aiが書かれた一枚の紙があります。彼らは次のゲームをします:
最初のラウンドでは、xの番号が付けられた子は、彼の番号に隣人の番号の合計を追加します。第2ラウンドでは、時計回りの順序で次の子が自分の数に隣人の数の合計を加算します。Mラウンドがプレイされた後、ゲームは終了します。
入力:
最初の行には、テストケースの数であるTが含まれています。Tケースが続きます。テストケースの最初の行には、スペースで区切られた2つの整数NとMが含まれています。次の行にはN個の整数が含まれており、i番目の数値はaiです。
出力:
テストケースごとに、それぞれN個の整数を持つN行を出力します。i番目の行のj番目の整数には、最初のラウンドをプレイする子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 30120 50
10 20 30 40100
23 7 12
11 21 6
7 13 24
これは、INterviewStreetの問題です。私はロジックを作成し、そのロジック全体を1つのメソッドに保持するときに正常に機能しました。しかし、2つのメソッドを使用してそれを実行しようとすると、「main」メソッドの配列「b」が「mtd」メソッドの配列「a」によって上書きされます。私は最善を尽くしましたが、それを引き起こしているものを見つけることができませんでした。
import java.util.Scanner;
public class Solution{
public static void main(String[] args) {
Solution obj = new Solution();
Scanner sc = new Scanner(System.in);
int n,k; // Variables
long m;
int t = sc.nextInt();
for(int rot=0;rot<t;rot++) {
n = sc.nextInt(); // reading input
m = sc.nextLong(); // reading input
long[] b = new long[n];
for(int i =0; i< n; i++)
b[i] = sc.nextLong(); // Reading values into array
for(int i=0; i< n;i++ ){ // Loop
obj.mtd(b,i,n,m); // calling Method "mtd"
System.out.println();
}
System.out.println();
}
}
void mtd(long[] a, int j,int n, long m) // "mtd" method
{
int p=0;
for(; p< m && j<n; j++,p++){ // logic
if(j==0){
a[0]= a[0]+a[1]+a[n-1];
}else if(j==n-1){
a[n-1]= a[0]+a[n-2]+a[n-1];
}else{
a[j]= a[j-1]+a[j]+a[j+1];
}
}
do{
if(j == n){ //
for(j=0; p< m && j< n; j++,p++){
if(j==0){
a[0]= a[0]+a[1]+a[n-1];
}else if(j==n-1){
a[n-1]= a[0]+a[n-2]+a[n-1];
}else{
a[j]= a[j-1]+a[j]+a[j+1];
}
}
}
}while(p!=m);
long z;
for(int k =0; k< n; k++){
z=a[k]%1000000007;
System.out.print(z+" "); // printing array after all operations
}
}
}
私が得ている出力は次のとおりです。
80 20 30 40 50
80130 30 40 50
80130200 40 50
80130200290 50
80130200290420
23 7 12
142 261 77
883 1624 2987