首页
社区
课程
招聘
[讨论]腾讯笔试第一站
发表于: 2008-9-19 14:59 6627

[讨论]腾讯笔试第一站

2008-9-19 14:59
6627
国王招来100个囚犯,对他们说:你们犯的是死罪,但我给你们一次求生的机会。15分钟以后,你们将被关进一个有100间隔离牢房的监狱里,每人一间牢房,都与外界隔绝,什么也听不见看不到,连时间都没法计算,无法获得外界的任何信息。
    这所监狱有一个院子,每天只少随机(注意是完全随机)打开一间牢房的门,让一个囚犯到院子里来放风。院子里有一盏灯,放风的囚犯可以控制它的开关,将它打开或是关闭。除囚犯之外,其他人都不会去碰开关。这盏灯会永远有充足的能源供应,灯泡和电路不会出故障。
    除了开关这盏灯,放风的囚犯放风时留下的任何其它痕迹都会在夜晚被清除干净(包括在灯上作的任何记号)。牢房是完全封闭的,院子里的灯光在牢房里看不到。只有放风到院子里的人才能看到。

    好了现在我向你们提出一个要求,只要你们做到了,就可以全部获得释放:
    给你们15分钟商量你们的方案。15分钟以后,你们将被关进我刚才说的那个监狱,永远无法再交流,被关若干天后,你们中间如果任何一个人能够向我证明你们每个人都至少放风了一次,我就把你们放了,不然永远别想再出来。
    好吧!这样吧,如果你们有谁现在可以告诉我这个方法,也就是能够证明你们每人至少放风一次的方法,我马上放掉你们!

    其中一个囚犯想了几分钟,回答了这个问题,国王听后,如自己所说的把他们全部给放了。请问那个囚犯是用什么方法证明的?

这到题目之前腾讯也出过……,今天又出来了……,只有一种效率很低的答案

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
2
所有人只开不关,开过的不动,找一个人负责关,记住关了多少次。
2008-9-19 16:09
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
3
forgot被关过啊
2008-9-19 16:23
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
4
完全随机。。。最坏的情况下,每200次,完成1个人的开关。100个人得20000天才能完成。。。相当于55年。。。之前出过,现在又出,再加上“只有效率很低”的方法。。。我估计是没人说出出题的人想要的答案吧
2008-9-19 18:08
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
5
国王只是要一个方法
所以几分钟后大家都自由了.

"只有一种"效率很低的答案
2008-9-19 18:31
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
6
汗。。。。终于理解发哥的说法了。。。。膜拜。。。。
2008-9-19 18:33
0
雪    币: 22
活跃值: (423)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
同意2楼 高手.
2008-9-19 18:52
0
雪    币: 297
活跃值: (53)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
8
我还以为让放风的人把灯泡打烂 拿玻璃在内裤上挖个企鹅形的洞就可以了
2008-9-21 04:41
0
雪    币: 1946
活跃值: (243)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
9
最好的情况下需要198天
int num = 0;
int light = 0;
bool first = true;
bool toend = false;
while(true)
{
    for(int i = 0;i < 100; i++)
    {
        if( i == 1 )
        {
            if( light % 2 )
            {
                light++;
                if( first )
                {
                    num++;
                    first = false;
                }
                if( num >= 100 )
                {
                    printf("需要%d天",light);
                    toend = true;
                    break;
                }
            }
        }
        else
        {
            if( !(light % 2) )
            {
                light++;
                num++;
            }
        }
    }
    if( toend )
    {
        break;
    }
}
2008-9-21 06:10
0
雪    币: 205
活跃值: (205)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
找一个人只负责关灯,剩下的人只能开灯,剩下的人当中,当一个人出来,如果灯是开着的,他就不动开关,当一个人出来,如果灯是关着的,而他以前没开过灯的话,就开灯,以前开过灯的话,就不开灯.那个负责关灯的人统计关灯次数.关灯次数达到一百次以上的时候.就可以证明
2008-9-21 08:01
0
雪    币: 251
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不错,同意2楼~~~
2008-9-22 10:25
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
蒙了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
2008-9-22 14:31
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
13
摩擦灯泡三次,召唤出shoooo,让国王的女人没有头发
2008-9-22 16:16
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
14
路过,继续膜拜发哥,跟发哥混,不怕被关
2008-9-22 18:21
0
雪    币: 242
活跃值: (418)
能力值: ( LV11,RANK:188 )
在线值:
发帖
回帖
粉丝
15
对着灯泡默念"发哥"13分钟24秒,发哥显身后就是“幸福的生活在一起了”
2008-9-23 00:14
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
这到题目是个无解答的,   因为变量“开”“关”

所有人都只能面对开和关,除非所有囚犯都不开灯,或者都不关灯

这样才能证明
2008-9-23 00:43
0
游客
登录 | 注册 方可回帖
返回
//