题解 | #怪异的洗牌#
怪异的洗牌
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; }