约瑟夫环

约瑟夫环

https://ac.nowcoder.com/acm/contest/19306/1003

https://ac.nowcoder.com/acm/contest/19306/1003

来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 32768K,其他语言65536K

64bit IO Format: %lld

题目描述

n个人(0,1,2,3,4...n-1),围成一圈,从编号为k的人开始报数,报数报到m的人出队(报数是

1,2,...m这样报的)。下次从出队的人之后开始重新报数,循环往复,当队伍中只剩最后一个人的时

候,那个人就是大王。现在,给定n,k,m,

请你求出大王的编号。

输入描述:

输入一行包含三个整数n,k,m

1<=n<=100,1<=k<=n-1,1<=m<=100

输出描述:

输出一个整数

示例1

输入

5 1 2

输出

#include <stdio.h>

int main()

{

int n,k,m;
scanf("%d%d%d",&n,&k,&m);
int a[100]={0};
int t=0,q=0,i=k-1;
while(1)
{
    i++;
    if(a[i]!=-1){
        t++;
        if(t==m)
          {
            a[i]=-1;
            q++;
            t=0;
          }
     
       }
     if(q==n-1) break;
       if(i==n-1) i=-1;
}

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

}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 10:39
一个证都没&nbsp;我能填什么
程序员小白条:别人有,你为什么没有,还是这个道理,社会就是比较,竞争,淘汰,你要安逸,那么就要做好淘汰的准备
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

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