题解 | #约瑟夫环#

约瑟夫环

https://ac.nowcoder.com/acm/problem/22227

#include <stdio.h>
int main()
{
    int n, k, m;
    scanf("%d %d %d", &n, &k, &m);
    int i=0,j=1,cnt=0;
    int a[10000];
    for (i = 0; i < n; i++)
    {
        a[i] = 1;
    }
    i = k;
    while(cnt!=n-1)
    {
        if (i>n-1||j>m)
        {
            if(i>n-1)
            i = 0;
            if(j>m)
            j=1;
            continue;
        }
        while(a[i]==0)
        {
            i++;
        }
        if (i>n-1||j>m)
        {
            if(i>n-1)
            i = 0;
            if(j>m)
            j=1;
            continue;
        }
        if(j==m)
        {
            a[i] = 0;
            j = 1;
            cnt++;
            i++;
            continue;
        }
        j++;
        i++;
        if (i > n-1 ||j>m)
        {
            if(i>n-1)
            i = 0;
            if(j>m)
            j=1;
        }    
    }
    for (i = 0; i < n; i++)
    {
        if (a[i]!=0)
            printf("%d\n", i);
    }
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:52
点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务