1008 数组元素循环右移问题 (20分)
输入格式:
每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。
输出格式:
在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。
输入样例:
6 2
1 2 3 4 5 6
输出样例:
5 6 1 2 3 4
//2020/9/11
#include<stdio.h>
//2020/9/11
int main (void){
int n,m;
scanf ("%d %d",&n,&m);
int a[n],b[n];
int i,j,k;
//本题的难点,做题时我们对于各种值的范围要敏感
//下面的if/解决m大于等于n的情况
if (m >= n) m%=n;
for (i = 0;i < n;i++){
scanf ("%d",&a[i]);
//下面是对应关系,
//一眼看不明白就画个图数形结合一下
if (i+m >= n){
b[i+m-n]=a[i];
}
else b[i+m]=a[i];
}
for (i = 0;i < n;i++){
//输出,注意结尾没空格
if (i == n-1) printf ("%d",b[i]);
else printf ("%d ",b[i]);
}
return 0;
}