首页 > 试题广场 >

圆桌上有1到1000号,1号右手边是2号,左手边是1000号

[填空题]
圆桌上有1到1000号,1号右手边是2号,左手边是1000号。1号开枪打死2号,把枪交给3号,3号打死4号交给5号。。999号打死1000号后把枪交给1号,继续循环。最后留下来的是几号?1
发表于 2019-08-10 20:52:05 回复(2)
发表于 2019-09-19 19:02:10 回复(0)
<p>977</p>
发表于 2020-06-01 18:06:20 回复(0)
<p>总人数为偶活1</p><p>为奇活中间那个</p>
发表于 2020-05-25 16:34:23 回复(1)
第一轮,偶数的全挂了,剩下1.3.5.7...999 第二轮,1k3.5k7.9k11,剩下的是1开始,等差为4的数列 第三轮,以此类推
发表于 2020-03-30 01:46:44 回复(0)
利用环链表进行遍历与删除实现
发表于 2019-10-11 17:26:08 回复(0)

脑子真是个好东西,怎么做啊做的出来???


发表于 2019-09-06 16:29:44 回复(1)
std::vector<bool> people(1000, true);
int remainPeople = 1000, count = 0, index = 0;
while(remainPeople > 1){
    if(people[index]) {
        count++;
        if (count == 2) {
            people[index] = false;
            count = 0;
            remainPeople--;
        }
    }
    index++;
    if(index == 1000)
        index = 0;
}
for(int i = 0; i < 1000; ++i){
    if(people[i] != false)
        std::cout << i << std::endl;
}

发表于 2019-08-14 17:27:11 回复(0)
f(x)=2**n+l
x是圆桌上的人的个数
留下来的人z的个数就是 2*l+1
1000=2**9+498
z=2*498+1=977
发表于 2019-08-10 17:08:22 回复(1)