思路:
-
题目中虽然给出了很多限制条件,例如不允许使用另外的数组,又要考虑移动的次数要少,但实际上可以不管过程,直接输出答案即可。
-
首先需要注意题目没给出M最大值,因此不能直接认为M<N,所以需要这步:M=M%N。
-
在得到新的M后直接输出从N-M号元素到N-1元素,再输出0号到N-M-1号元素即可。
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int n, m;
int a[101];
int count = 0;
cin >> n >> m;
for(int i = 0; i < n; i++){
scanf("%d", &a[i]);
}
m = m % n;
for(int i = n - m; i < n; i++){
cout << a[i];
count++;
if(count < n){
cout << " ";
}
}
for(int i = 0; i < n - m; i++){
cout << a[i];
count++;
if(count < n){
cout << " ";
}
}
return 0;
}