题解 | #怪异的洗牌#

怪异的洗牌

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

全部评论

相关推荐

06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务