#include <iostream>
using namespace std;
void _reverse(int* , const int , const int);
int main() { //方法一,记住该方法,同样适用于链表
//freopen("rsk.txt", "r", stdin);
int n, k;
while (cin >> n >> k) {
int* arr = new int[n];
for (int i = 0; i < n; ++i)
cin >> arr[i];
if (k != 0)
k = k % n;
_reverse(arr, 0, n - k -1);// 1
_reverse(arr, n - k, n - 1);//2
_reverse(arr, 0, n - 1);//3 三个逆置
for (int i = 0; i < n; ++i)
cout << arr[i] << " ";
cout << endl;
}
return 0;
}
void _reverse(int* arr, const int start, const int end) {
for (int i = start; i <= (start + end) / 2; ++i)
swap(arr[i], arr[end +start - i]);
}
#include <iostream>
using namespace std;
int main() { //方法二
int n, k;
while (cin >> n >> k) {
int* arr = new int[n];
for (int i = 0; i < n; ++i)
cin >> arr[i];
if (k != 0)
k = k % n;
int count = n; // 移位操作统计
/*
* 内层do while 循环可能无法一次完成移位操作
* 所以添加for循环
*/
for (int i = 0; i < k; ++i) {
int j = k + i;
int tmp1 = arr[i];
do {
int tmp2 = arr[j];
arr[j] = tmp1;
tmp1 = tmp2;
j = (j + k) % n;
count--;
} while (j != k + i);
if (!count)
break;
}
for (int i = 0; i < n; ++i)
cout << arr[i] << " ";
cout << endl;
}
return 0;
}
#pragma warning(disable:4996)#include using namespace std;void _reverse(int* , const int , const int);int main() { //方法一 //freopen("rsk.txt", "r", stdin); int n, k; while (cin >> n >> k) { in