n个猴子围成一圈,从1开始报数,报到m的猴子出局,剩下的猴子再从1开始报数,报到n者出局。最后剩下的猴子为大王。最编程输出最后留下的大王?
#include<stdio.h>
int main()
{
int n,m,i,j,k,a[300];//n为猴子数
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)//将猴子排序
a[i]=i+1;
i=0;
j=0;
k=0;
while(j<n-1)//剩下的最后一只猴子为猴王
{
if(a[i]!=0)//开始报数
k++;
if(k==m)//将猴子淘汰
{
a[i]=0;
j++;
k=0;//从1开始报数
}
i++;
if(i==n)//从头开始报数
i=0;
}
for(i=0;i<n;i++)//找出猴王
if(a[i]!=0)
printf("%d\n",a[i]);
return 0;
}