题目描述
变态杀人狂三师弟想到一个杀人游戏
游戏规则如下:
三师弟抓了n个人
对这n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。请输出每次被杀的人的编号
注意最后一个活着的人不用输出
输入
多组测试数据,输入n和m值。1<n,m<200,EOF结束
输出
输出每次被杀的人的编号 注意 最后一个人不用输出
样例输入
5 3
样例输出
3152
提示:先将n个人围成一个圈,并将死的人将活着的人加以区分,编号不要掉。
#include <stdio.h>
#include<string.h>
int
main()
{
int
i,a,b,k;
while
(
scanf
(
"%d%d"
,&a,&b)!=EOF)
{
int
c[a],q,e=0;
for
(i=0;i<a;i++)
c[i]=1;//先将活着的人标记为1,数组c的下表当做序号。
k=0;
for
(i=0;i<a;i++)
{e=0;
if
(c[i]!=0)
k=k+1;//活着的人继续玩游戏,
for
(q=0;q<a;q++)
if
(c[q]==0)
e++;//统计死人的个数。
if
(e==a-1)
break
;
if
(k==b)
{
c[i]=0;//将死的人标记为0
k=0;
printf
(
"%d\n"
,i+1);//将序号输出来。
}
if
(i==a-1)
i=-1;//数到最后一个人将从第一个人开始。
}
}
return
0;
}