题解 | #怪异的洗牌#

怪异的洗牌

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;
}

全部评论

相关推荐

11-03 14:38
重庆大学 Java
AAA求offer教程:我手都抬起来了又揣裤兜了
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务