报数 计蒜客 - T1475
问题描述
有 n 人围成一圈,顺序排号。
从第 1 个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,问最后留下的是原来的第几号。
输入格式
初始人数 n(1≤n≤100)。
输出格式
最后一人的初始编号。
输入样例
3
输出样例
2
- 参考程序
#include<iostream>
#include<cstdio>
using namespace std;
const int N=1e3+10;
int que[N], front=0, rear=-1, cnt=0;
int main(){
int n; cin>>n;
for(int i=1; i<=n; i++){
que[++rear] = i; // [1, n]
}
while(rear-front >= 1){
cnt++;
if(cnt==3) {
cnt=0;
// cout<<que[front]<<" ";
}else{
que[++rear] = que[front];//队头入队尾
}
++front;//出队
}
cout<<que[front]<<endl;
return 0;
}