//题目: 山上有m只猴子要选大王,选举办法如下:所有猴子从1到m进行编号并围坐一圈,从第一号开始按
顺序1,2,…n继续报数,凡是报n号的猴子都退出到圈外,照此循环报数,直到圈内只剩下一只猴子
时,这只猴子就是大王.输出大王的编号。
思路:
1.设置全为1的数组(尽量大),报到数将1改为0;
2.从下一只重新报数,报到数将1改为0;
3。当第m个0产生,即产生猴王。
#include "Stdio.h"
int main()
{
int a[100];
int i,m,n,t,sum=0;
scanf("%d,%d",&m,&n);
for(i=0;i<100;i++)
{a[i]=1;}
t=0; //猴子的编号
for(i=1;i<=m; )
{
sum+=a[t]; //一个个报数
if(sum==n) //退出
{
a[t]=0;
printf("%d",t+1);
sum=0; // 重新报数
i++;
}
t=(t+1)%m; //闭环 从下一只开始
}
printf("\n") ;
getch();
return 0;
}