题解 | 约瑟夫环

约瑟夫环

https://www.nowcoder.com/practice/e417cfe32c74416ca38247f619ddb322

#include <stdio.h>

int main() {
    int n,k,m;
    scanf("%d %d %d",&n,&k,&m);
    int a[100]={0};
    int count_num = 0;
    int count_m = 0;
    
    int i = k-1;//从第k个编号的人开始报数,所以第k个也要检测
    while(1)
    {
        i = (i+1) % n;//环形轮询

        if(a[i]==0)
        count_m++;

        if(count_m == m)
        {
        a[i] = 1;
        count_num++;
        count_m = 0;
        }
        if(count_num == n-1)
        break;
    }

    for(int i=0;i<n;i++)
    {
        if(a[i]==0)
        printf("%d",i);
    }
    return 0;
}

全部评论

相关推荐

03-04 07:14
门头沟学院 C++
后测速成辅导一两个月...:老板:都给工作机会了还想要工资,哪来这么多好事
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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