You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
#include<iostream>
|
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
const int N = 610;
|
|
|
|
|
int a[N];
|
|
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
|
//n:总人数,s:本轮已计数人数,p:现在检查的是第几个人
|
|
|
|
|
int n, s = 0, p = 0;
|
|
|
|
|
cin >> n;
|
|
|
|
|
|
|
|
|
|
//一共需要出圈次数n-1次,最终需要剩下一个人
|
|
|
|
|
for (int i = 1; i <= n - 1; i++) {
|
|
|
|
|
//如果本轮没有达到三个人点数的情况下,就一直在想办法找三个人
|
|
|
|
|
while (s < 3) {
|
|
|
|
|
if (p == n)p = 0; //如果走到了最后一个,需要把p的位置调整为虚拟的0号位置,这个是难点,不好想
|
|
|
|
|
p++; //不管是不是有效的数字,是不是出过列,我就是要往前一直走,我就是个指针,我的作用是当找到第3个人的时候,这个人的下村是多少。
|
|
|
|
|
if (a[p] == 0) s++; //只有标识为0的才能查数,是1的表示已经出列,不能查数
|
|
|
|
|
}
|
|
|
|
|
//找到数3的了
|
|
|
|
|
a[p] = 1; //把这个位置标识为已经出列了
|
|
|
|
|
s = 0; //本轮S的任务完成,清零,让下次查数有个好的计数器
|
|
|
|
|
}
|
|
|
|
|
for (int i = 1; i <= n; i++) if (a[i] == 0)cout << i;//输出没有出列的人
|
|
|
|
|
return 0;
|
|
|
|
|
}
|