static void Main(string[] args)
{
///解题思路:
///1,N个猴子,报数,报道M个猴子出圈
///2,输出N个人的出圈次序
///3,用数组模拟N猴子,数组类型为布尔,代表这个人是否出圈,为true时这猴子出圈
///4,我们可以用循环模拟报数,报到M的人出圈。当N个人全部出圈之后循环结束
///5.报数的时候,需要判断,没出圈的人才能报数。
int n;
int m;
Console.WriteLine("N代表圈中有多少人");
n = int.Parse(Console.ReadLine());
Console.WriteLine("M代表出圈的人");
m = int.Parse(Console.ReadLine());
int index = 0;
int count = 0;
int num = 0;
bool[] monkey = new bool[n];
while (num <= m)
{
if (monkey[index] == false)
{
count++;
if (count == m)
{
//下一个人从新报数
count=0;
//当前报M的人出圈
monkey[index] = true;
//出圈人数加1
num++;
Console.WriteLine("第{0}个人出圈了", index + 1);
}
}
//下一个人报数,index同时注意越界
index++;
index %= n;
}
Console.ReadLine();
}