题目描述
有 n 个人围成一个圈,从 1 到 n 按顺序排好号。然后从第一个人开始顺时针报数(从 1 到 3 报数),报到 3 的人退出圈子后,后面的人继续从 1 到 3 报数,直到留下最后一个人游戏结束,问最后留下的是原来第几号。
输入
输入一个正整数 n(4 < n < 600)
输出
输出最后留下的人,原来的编号是多少?
样例输入
5
样例输出
4
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,r,a[605]={0},c=0;
cin>>n;
r=n;
while(r>1){
for(int i=1;i<=n;i++){
if(a[i]==0){
c++;
if(c==3){
c=0;
r--;
a[i]=1;
}
}
}
}
for(int l=1;l<=n;l++)
if(a[l]==0)
cout<<l;
}