一個陣列A中存有N(>0)個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向右移M(≥0)個位置,即將A中的資料由(A0A1⋯AN−1)變換為(AN−M⋯AN−1A0A1⋯AN−M−1)(最後M個數迴圈移至最前面的M個位置)。如果需要考慮程式移動資料的次數儘量少,要如何設計移動的方法?
輸入格式:
每個輸入包含一個測試用例,第1行輸入N(1≤N≤100)和M(≥0);第2行輸入N個整數,之間用空格分隔。
輸出格式:
在一行中輸出迴圈右移M位以後的整數序列,之間用空格分隔,序列結尾不能有多餘空格。
輸入樣例:
6 2
1 2 3 4 5 6
輸出樣例:
5 6 1 2 3 4
code
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
in.nextToken();
int n = (int) in.nval;
in.nextToken();
int x = (int) in.nval;
int[]a = new int[n];
for(int i = 0 ; i < n ; i++){
in.nextToken();
a[i] = (int) in.nval;
}
int ri = x % n;
for(int j = n - ri ; j < n ; j++){
System.out.print(a[j] + " ");
}
for(int k = 0 ; k < n - ri -1 ; k++){
System.out.print(a[k] + " ");
}
System.out.println(a[n - ri - 1]);
}
}