题解 | #怪异的洗牌#
怪异的洗牌
https://www.nowcoder.com/practice/1801ea11cc9d4732a7f0cb2b0b75c8cf
#include<cstdio>
int main(){
int n,k,nums1[1000],nums2[1000];
while(scanf("%d %d",&n,&k)!=EOF){
if(n==0&&k==0)
break;
for(int i=0;i<n;++i)//初始化
nums1[i]=i+1;
for(int i=0;i<k;++i){
int x;
scanf("%d",&x);
for(int i=0;i<n;++i)//移位
nums2[i]=nums1[(i+x)%n];
for(int i=0;i<n;++i)//复制
nums1[i]=nums2[i];
int j=n/2-1;
for(int i=0;i<n/2;++i)//翻转
nums1[j--]=nums2[i];
}
bool flag=true;
for(int i=0;i<n;++i)
if(flag){
flag= false;
printf("%d",nums1[i]);
}
else
printf(" %d",nums1[i]);
printf("\n");
}
return 0;
}

联想公司福利 1477人发布