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