题目链接在此。
虽然这个题目在题干中有非常多的限制,“不允许有额外数组”、“移动次数最少”等等,但是PAT是一个黑盒测试,只需要结果正确,能过通过所有测试点即可。所以不需要被这些限制所限制,这里只写出两种方法, 一种是我自己的想法,用了“简单模拟”的思想,即题目说“数组右移”,那么我就数组右移,故这种方法的关键就在如何右移数组;另外一种方法是《算法笔记》中的,这种方法更加直接,直接按照一定的规律输出,甚是巧妙。
下面是我的代码:
#include<stdio.h>
int main(){
int N,M;
int a[105];
scanf("%d %d",&N, &M);
M = M % N; //题目并没有保证M<N
for( int i =