前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题十五期-一个腾讯的面试题~biu

面试题十五期-一个腾讯的面试题~biu

作者头像
测试小兵
发布2019-11-21 17:35:26
5620
发布2019-11-21 17:35:26
举报
文章被收录于专栏:猪圈子猪圈子
【一个腾讯的面试题~biu】

diligence redeems stupidity

勤能补拙

一个腾讯的面试题

1、1000瓶药水,其中至多有1瓶剧毒,现在给你10只小狗在24小时内通过小狗试药的方式找出哪瓶药有毒或者全部无毒(小狗服完药20小时后才能判断是否中毒)。

解题思路:首先,不能考虑(24-20=4小时),在4小时内,将1000瓶药水依次喂给10只狗,将喂药的时间点与药水记录下来。不考察这种查找方式。

标准的解题方法:

把狗从0-9编号;

把药水按1-1000编号;

把药水编号按二进制,如果第i位(因为最大1000,所以bit位为0-9)bit位为1,则分给编号为i的狗狗喝;

最后得一二进制数,如果编号为i的狗狗死了,该数的第i bit位为1,该数就是有毒的药水编号。

他说的比较专业,下面我用实例给解析一下:

用 0、1、2、3、4、5、6、7、8、9 给小狗编号;

而药水按1-1000编号;

我们把每瓶药水的编号转换为二进制数,由于2的10次方=1024,所以我们将二进制数定为有10个数位,如:

1=0000000001

13=0000001101

214=0011010110

对二进制转换不熟悉的朋友可以用“开始-程序-附件-计算器-查看-科学型”来轻松转换。

这样转换以后,每个药水编号的二进制数的每一位都分别对应一只小狗;

我们定义每瓶药水要喂给其二进制编号位数为“1”的那位对应的小狗喝;

由于2的10次方=1024>1000,所以这些二进制编号组合都是唯一的;

当我们用不到4小时的时间将1000瓶药水分别喂给相应的小狗喝后,就可以去看看书,上上网,听听歌来打发剩下的20小时;

20小时候,在一个合理的药效发作时间后,我们统计有中毒症状小狗的编号,中毒的定为“1”,正常的定为“0”;

然后依照编号顺序排列,我们就可以得到一个10位的二进制数,而将这个二进制数再转换为十进制数后,这个数值就是有毒的药水的编号了;

例如,最终结果是编号为 2、4、6、7、9 的小狗有中毒症状,我们就将一个十位二进制数的2、4、6、7、9位设为“1”,其余各位设为“0”,即:0010101101;

而0010101101对应的十进制数=173,所以第173瓶药水就是有毒药水!

真是个折磨人脑子的面试题,这就是我不进腾讯的原因

看到这个答案,我彻底被吓到了。。高手太多了。

现实中,你们有遇到哪些“高智商”的面试题呢?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python测试社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档