# 数组元素循环右移问题

题目：一个数组A中存有N（>0）个整数，在不允许使用另外数组的前提下，将每个整数循环向右移M（≥0）个位置（最后M个数循环移至最前面的M个位置）。如果需要考虑程序移动数据的次数尽量少，要如何设计移动的方法？

输入格式:

每个输入包含一个测试用例，第1行输入N（1≤N≤100）和M（≥0）；第2行输入N个整数，之间用空格分隔。

输出格式:

在一行中输出循环右移M位以后的整数序列，之间用空格分隔，序列结尾不能有多余空格。

输入样例:

```json
6 2
1 2 3 4 5 6
```

输出样例:

```json
5 6 1 2 3 4
```

以下程序实现了这一功能，请你填补空白处内容：

```cpp
#include <stdio.h>
int main()
{
    int n, m, a[1000];
    scanf("%d %d", &n, &m);
    m = m % n;
    int count = m;
    ______________;
    for (int i = 0; i < count; i++)
        scanf("%d", &a[i]);
    int first = 1;
    for (int i = 0; i < n; i++)
    {
        if (!first)
            printf(" ");
        printf("%d", a[i]);
        first = 0;
    }
}
```

## template

```cpp
#include <stdio.h>
int main()
{
    int n, m, a[1000];
    scanf("%d %d", &n, &m);
    m = m % n;
    int count = m;
    while (m < n)
    {
        scanf("%d", &a[m]);
        m++;
    }
    for (int i = 0; i < count; i++)
        scanf("%d", &a[i]);
    int first = 1;
    for (int i = 0; i < n; i++)
    {
        if (!first)
            printf(" ");
        printf("%d", a[i]);
        first = 0;
    }
}
```

## 答案

```cpp
while (m < n)
{
	scanf("%d", &a[m]);
	m++;
}
```

## 选项

### A

```cpp
while (m < n)
{
	scanf("%d", &a[m + 1]);
	m++;
}
```

### B

```cpp
while (m < n)
{
	scanf("%d", &a[m]);
	m--;
}
```

### C

```cpp
while (m < n)
{
	scanf("%d", &a[m + 1]);
	m--;
}
```