#include<stdio.h>
int main(){
int n,m;
int a[100];
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
m%=n;//因为有可能会转好几圈,都按一圈内算
if(m==0){//移动0次,直接输出即可
for(int k=0;k<n;k++){
printf("%d",a[k]);
if(k!=n-1) printf(" ");
}
}
else{//如移动m次,则先从索引为n-m处输出
for(int j=n-m;j<n;j++){
printf("%d",a[j]);
printf(" ");//因为这部分输出最后一个数一定是在中间,因此一定会跟一个空格
}
//接着输出前面部分的数字
for(int k=0;k<n-m;k++){
printf("%d",a[k]);
if(k!=n-m-1) printf(" ");//此时要考虑最后一个不输出空格
}
}
return 0;
}
题目只是说让输出移动后的结果,因此我们只需要确定好移动后元素所在位置,先输出后面的,再输出前面的就行,没必要真的移动后再输出;
当然如果要真的移动,用在循环中用临时变量保存末尾值,然后把前面的数据往后移,再把末尾存到前面,循环m次即可