描述:有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
int n;
cin >>n;
vector<int>nums;
for (int i = 1; i < n+1; i++)
{
nums.push_back(i);
}
vector<int>::iterator it = nums.begin();
int num = 0;
int num_p = 1;
while (true)
{
it = (nums.begin() + num);
if (nums.size() == 1)
{
cout << *nums.begin();
break;
}
else
{
if (num_p == 3)
{
if (num == nums.size() - 1)
{
num = 0;
}
nums.erase(it);
num_p = 1;
}
else
{
if (num >= nums.size() - 1)
{
num = 0;
num_p++;
}
else
{
num++;
num_p++;
}
}
}