题目描述
n只猴子围坐成一个圈,按顺时针方向从1到n编号。然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,再从刚出局猴子的下一个位置重新开始报数,如此重复,直至剩下一个猴子,它就是大王。
输入
输入两个整数n和m,1<=m<=n<=100。
输出
输出猴王的编号
样例输入
8 3
样例输出
7
#include<stdio.h>
int main()
{
int n,m,a[101],out=0,num=0,i;//out为出局的猴子
scanf("%d %d",&n,&m);
for(i=0; i<n; i++)
{
a[i]=0;//将所有猴子赋值为0
}
i=0;
while(out!=n-1)//剩余最后一只猴子结束循环
{
if(a[i]==0)
{
num++;
}
if(num==m)
{
num=0;//num重新计数
a[i]=1;
out++;
}
i++;
if(i==n)//最后一个猴子计数完重新计数
{
i=0;
}
}
for(i=0; i<n; i++)
{
if(a[i]==0)
{
printf("%d",i+1);//因为i从0计数,所以值加1为最后一只猴子的编号
break;
}
}
return 0;
}