#include <stdio.h>
#include <stdlib.h>
int main()
{int s,n,m,x;
scanf("%d%d%d",&n,&s,&m);
int i,a[1000]={0},k;
int flag=0,num=n;
for(i=s-1;num>1;)
{
if(a[i]==0)//一个一个地数,不要i+m,这样中间的人是什么情况无法查看
flag++;
if(flag==m)
{
a[i]=1;
num--;
printf("%d ",i+1);
flag=0;
}
if(i==n-1)//到头就从头开始,这样循环不会导致计数增加,又可以保证遍历所有的数
{
i=0;
} else
i++;
}
for(i=0;i<n;i++)
{
if(a[i]==0)
printf("%d",i+1);
}
return 0;
}
约瑟夫问题 C语言
最新推荐文章于 2025-03-13 17:34:31 发布