有 n 人围成一圈,顺序排号。从第 1 个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,问最后留下的是原来的第几号。
输入格式
初始人数 n(1≤n≤100)。
输出格式
最后一人的初始编号。
输出时每行末尾的多余空格,不影响答案正确性
样例输入
3
样例输出
2
思路:利用队列模拟
#include <iostream>
#include <queue>
using namespace std;
queue<int> q;
int main() {
int n;
cin>>n;
for (int i = 1; i <= n; i++) {
q.push(i);
}
int cnt = 0;
while(q.size()>1) {
int f = q.front();
cnt++;
// q.pop();
if (cnt == 3) {
q.pop();
cnt = 0;
} else {
q.pop();
q.push(f);
}
}
cout<<q.front();
return 0;
}