您的位置:首页 > 其它

SDUT 1197 约瑟夫问题

2017-09-14 17:52 232 查看

约瑟夫问题

Time Limit: 1000MSMemory Limit: 65536KB

SubmitStatistic

Discuss

Problem Description

n个人想玩残酷的死亡游戏,游戏规则如下:

n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。

请输出最后一个人的编号。

Input

输入n和m值。

Output

输出胜利者的编号。

Example Input

5 3


Example Output

4


Hint

第一轮:3被杀第二轮:1被杀第三轮:5被杀第四轮:2被杀 
#include<stdio.h>
int main()
{
int n,m,re_n,i,count;
scanf("%d %d",&n,&m);
int peo
;
for(i=0;i<n;i++)
peo[i]=1;
re_n=n;//报数前圈子里的人数
i=n-1;//报数的为下一个人
while(re_n>1)
{
count=0;
while(count<m)
{
i=(i+1)%n;
if(peo[i])
count++;
}
re_n--;//报m的人出局,人数减一
peo[i]=0;
}
for(i=0;i<n;i++)
{
if(peo[i])
{
printf("%d\n",i+1);
break;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: