题目
代码
#include<cstdio>
int main(){
int a[3333];
int N,M,count=0;
scanf("%d%d",&N,&M);
M = M%N;//给M做修正
for(int i = 0; i < N; i++){
scanf("%d",&a[i]);
}
for(int i = N-M;i < N; i++){
printf("%d",a[i]);count++;
if(count<N)
printf(" ");
}
for(int i = 0;i < N-M; i++){
printf("%d",a[i]);count++;
if(count<N)
printf(" ");
}
return 0;
}
总结
1.首先需要注意题目并没有给定M的最大值,因此不能直接认为M<N,而需要在读入N和M后令M=M %N,这样就可以保证M<N,使后面的操作更简便。这样做的依据是:对一个长度为N的序列,右移N位之后的序列和当前序列是相同的。
2.处理最后一个数字之后不输出空格可以使用count变量记录已经输出数的个数,只要count没有达到N,就输出空格。