#region 解决方案一
//思路:把所有的位置的值都标为1,,循环判断是3的倍数的位置的值标为2
Console.WriteLine("请输入人数:");
int number = int.Parse(Console.ReadLine());
List<int> lastThree = new List<int>();
int lastResult = 0;
int[] intArr = new int[number];
for (int i = 0; i < intArr.Length; i++)
{
intArr[i] = 1;
}
int index = 0;
int length = intArr.Length;
int last = -1;
while (length > 1)
{
for (int i = 0; i < intArr.Length; i++)
{
if (intArr[i] == 1)
{
index++;
if (index == 3)
{
if (length==2)
{
last = i;
length--;
break;
}
index = 0;
intArr[i] = 2;
length--;
}
}
}
}
for (int i = 0; i < intArr.Length; i++)
{
if (intArr[i] == 1)
{
lastResult = i;
}
}
Console.WriteLine("最后一个出圈的人是原来的下标为{0}号,留下来的是原来的{1}号", last,lastResult);
Console.ReadLine();
#endregion