n个猴子围坐一圈并按照顺时针方向从1到n编号,从第s个猴子开始进行1到m的报数,报数到第m的猴子退出报数,从紧挨它的下一个猴子重新开始1到m的报数,如此进行下去知道所有的猴子都退出为止。求给出这n个猴子的退出的顺序表。
我们要对这n个猴子编脚标并在第s个猴子开始数在报m的猴子去除后将所有的猴子脚标按第一次那样编脚标。
#include<stdio.h>
int main()
{
int a[100];
int n,m,s,t,j,i,k,h=0;
while(~scanf("%d %d %d",&n,&s,&m))
{
if(n==0&&s==0&&m==0)
{
break;
}
else
{
for(i=0;i<n;i++)
{
a[i]=i+1;
}
t=n;
i=s-1;
h=0;
while(n)
{
i=(i+m-1)%n;
printf("%d",a[i]);
for(j=i;j<n-1;j++)
{
a[j]=a[j+1];
}
h++;
if(h==t)
{
printf("\n");
}
else
{
printf(",");
}
n--;
}
}
}
return 0;
}