最近,一直学习C语言,今天有同学问我关于约瑟夫环的问题,顿时被难倒了,不过,我的倔强让我花了一小时终于搞懂了。。广大学习C语言的孩子是不是有同样的感觉。
Description
有一次,明明的公司举行忘年会。忘年会的高潮部分是最后的抽大奖环节。公司为了增加活动的气氛,并没有按传统的抽奖方式来抽,而是进行了一个游戏:逐步逐步地淘汰人,而最后剩下的人,将会得到大奖。这个游戏的方式如下:首先公司的全部职员围成一个圈,然后确定一个淘汰数X,接着就从其中的一个人开始,从1数数,当数到X时,那个人就被淘汰出局,接着下一个人再从1开始数数,一直这样重复下去,直到剩下最后一个人,那个人就是最后的大奖得主。
例如,公司有5个人,淘汰数定为2,则一开始五个人排成一圈,依次编号为:1、2、3、4、5;
首先从编号1的人开始数数,数到2后,编号2淘汰,这样只剩下4个人:1、3、4、5;
接着从编号3的人开始数,数到2后,编号4淘汰,这样只剩下3个人:1,3、5;
接着从编号5的人开始数,数到2后,编号1淘汰,这样只剩下2个人:3、5;
最后从编号为5的人开始数,数到2后,编号5淘汰,最后编号为3的那个人就获得了最终的大奖。
(注:以上的淘汰顺序为2 4 1 5 3。)
由于明明的运气十分地差,最后第二个被淘汰,与大奖失之交臂,十分郁闷。他想知道自己被淘汰的全过程,于是他想请你帮个忙,帮他写一个程序,明明把他公司的人数告诉你,并且把那个淘汰数也告诉你,你的程序能够根据这两个数计算出淘汰人的具体顺序,即把淘汰人的编号按顺序输出。
明明的问题可以归结为:给你一个公司的人数N和一个淘汰数X,你的程序模拟上面描述的淘汰方式,输出淘汰人的编号顺序。
ps:万恶的明明!

代码如下:
这里说明一下index是当前开始报数的位置,step是间隔的人数,count是出局的人数