123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #include <stdio.h>
- void rightRotate(int arr[], int n, int m) {
- int temp[n], i;
- // 计算实际移动的位置
- m = m % n;
- // 将数组最后m个元素移到临时数组的前面
- for (i = 0; i < m; i++) {
- temp[i] = arr[n - m + i];
- }
- // 将数组前n-m个元素移动到临时数组的后面
- for (i = 0; i < n - m; i++) {
- temp[m + i] = arr[i];
- }
- // 将临时数组的内容复制回原数组
- for (i = 0; i < n; i++) {
- arr[i] = temp[i];
- }
- }
- int main() {
- int n, m;
- // 读取N和M
- scanf("%d %d", &n, &m);
- int arr[n], i;
- // 读取N个整数
- for (i = 0; i < n; i++) {
- scanf("%d", &arr[i]);
- }
- // 右移M位
- rightRotate(arr, n, m);
- // 输出结果
- for (i = 0; i < n; i++) {
- if (i > 0) {
- printf(" ");
- }
- printf("%d", arr[i]);
- }
- printf("\n");
- return 0;
- }
|