参考资料: [分享几个有趣的程序员面试智力题][2] [程序员面试智力题集锦][3]

博弈论(选择策略)

  • 考虑一个双人游戏. 游戏在一个圆桌上进行. 每个游戏者都有足够多的硬币. 他们需要在桌子上轮流 放置硬币, 每次必需且只能放置一枚硬币, 要求硬币完全置于桌面内(不能有一部分悬在桌子外面), 并且不能与原来放过的硬币重叠. 谁没有地方放置新的硬币, 谁就输了. 游戏的先行者还是后行者有必胜策略? 这种策略是什么?

答案:先行者在桌子中心放置一枚硬币, 以后的硬币总是放在与后行者刚才放的地方相对称的位置. 这样, 只要后行者能放, 先行者一定也有地方放. 先行者必胜.

  • A、B两人分别在两座岛上. B生病了, A有B所需要的药. C有一艘小船和一个可以上锁的箱子. C愿意在A和B之间运东西, 但东西只能放在箱子里. 只要箱子没被上锁, C都会偷走箱子里的东西, 不管箱子里有什么. 如果A和B各自有一把锁和只能开自己那把锁的钥匙, A应该如何把东西安全递交给B?

答案:A把药放进箱子, 用自己的锁把箱子锁上. B拿到箱子后, 再在箱子上加一把自己的锁. 箱子运回A后, A取下自己的锁. 箱子再运到B手中时, B取下自己的锁, 获得药物.

  • 两个机器人, 初始时位于数轴上的不同位置. 给这两个机器人输入一段相同的程序, 使得这两个机器人保证可以相遇. 程序只能包含”左移n个单位”、”右移n个单位”, 条件判断语句If, 循环语句while, 以及两个返回Boolean值的函数”在自己的起点处”和”在对方的起点处”. 你不能使用其它的变量和计数器.

答案:两个机器人同时开始以单位速度右移, 直到一个机器人走到另外一个机器人的起点处. 然后, 该机器人以双倍速度追赶对方. 程序如下.

1
2
3
4
5
6
while(!at_other_robots_start) {
  move_right 1
}
while(true) {
  move_right 2
}
  • 如果叫你从下面两种游戏中选择一种, 你选择哪一种? 为什么? a. 写下一句话. 如果这句话为真, 你将获得10美元;如果这句话为假, 你获得的金钱将少于10美元或多于10美元(但不能恰好为10美元)   b. 写下一句话. 不管这句话的真假, 你都会得到多于10美元的钱.

答案:选择第一种游戏, 并写下”我既不会得到10美元, 也不会得到10000000美元”.(看不懂答案??)

  • 有25匹马, 速度都不同, 但每匹马的速度都是定值. 现在只有5条赛道, 无法计时, 即每赛一场最多只能知道5匹马的相对快慢. 问最少赛几场可以找出25匹马中速度最快的前3名? (百度2008年面试题)

答案: 每匹马都至少要有一次参赛的机会, 所以25匹马分成5组, 一开始的这5场比赛是免不了的. 接下来要找冠军也很容易, 每一组的冠军在一起赛一场就行了(第6场). 最后就是要找第2和第3名. 我们按照第6场比赛中得到的名次依次把它们在前5场比赛中所在的组命名为A、B、C、D、E. 即:A组的冠军是第6场的第1名, B组的冠军是第6场的第2名……每一组的5匹马按照他们已经赛出的成绩从快到慢编号:

A组:1, 2, 3, 4, 5 B组:1, 2, 3, 4, 5 C组:1, 2, 3, 4, 5 D组:1, 2, 3, 4, 5 E组:1, 2, 3, 4, 5

从现在所得到的信息, 我们可以知道哪些马已经被排除在3名以外. 只要已经能确定有3匹或3匹以上的马 比这匹马快, 那么它就已经被淘汰了. 可以看到, 只有上表中粗体的那5匹马是有可能为2、3名的. 即:A组的2、3名;B组的1、2名, C组的第1名. 取这5匹马进行第7场比赛, 第7场比赛的前两名就是25 匹马中的2、3名. 故一共最少要赛7场.

这道题有一些变体, 比如64匹马找前4名. 方法是一样的, 在得出第1名以后寻找后3名的候选竞争者就可以了.

  • 硬币游戏: 16个硬币, A和B轮流拿走一些, 每次拿走的个数只能是1, 2, 4中的一个数. 问:A或B有无策略保证自己赢?

答案: 此题, 谁先拿谁就输, 如果第一个人拿1个, 第二个人就拿2个, 如果第一个人拿2个, 第二个人就拿1个, 如果第一个人拿4个, 地二个人就拿2个, 只要第二个人保证于第一个人拿的球数 相加是3的倍数, 就赢定了.

  • 帽子问题2:

有一个牢房, 有3个犯人关在其中. 因为玻璃很厚, 所以3个人只能互相看见, 不能听到对方说话的声音. “ 有一天, 国王想了一个办法, 给他们每个人头上都戴了一顶帽子, 只叫他们知道帽子的颜色不是白的 就是黑的, 不叫他们知道自己所戴帽子的是什么颜色的. 在这种情况下, 国王宣布两条如下: 1.谁能看到其他两个犯人戴的都是白帽子, 就可以释放谁; 2.谁知道自己戴的是黑帽子, 就释放谁. 其实, 国王给他们戴的都是黑帽子. 他们因为被绑, 看不见自己罢了. 于是他们3个人互相盯着不说话. 可是不久, 心眼灵的A用推理的方法, 认定自己戴的是黑帽子. 您想, 他是怎样推断的?

答案: 如果A是白帽子的话, 则B就知道自己是黑帽子了, 因为如果B是白帽子, C就会看到两个白帽子了, 但是C没有看到, 所以……..

  • 一间囚房里关押着两个犯人. 每天监狱都会为这间囚房提供一罐汤, 让这两个犯人自己来分. 起初, 这两个人经常会发生争执, 因为他们总是有人认为对方的汤比自己的多. 后来他们找到了一个两全其美 的办法:一个人分汤, 让另一个人先选. 于是争端就这么解决了. 可是, 现在这间囚房里又加进来一个 新犯人, 现在是三个人来分汤. 必须寻找一个新的方法来维持他们之间的和平. 该怎么办呢?

答案:心理问题, 不是逻辑问题是让甲分汤, 分好后由乙和丙按任意顺序给自己挑汤, 剩余一碗留给甲. 这样乙和丙两人的总和肯定是他们两人可拿到的最大. 然后将他们两人的汤混合之后再按两人的方法再次分汤.

  • 5名海盗抢得了窖藏的100块金子, 并打算瓜分这些战利品. 这是一些讲民主的海盗(当然是他们自己特有 的民主), 他们的习惯是按下面的方式进行分配: 最厉害的一名海盗提出分配方案, 然后所有的海盗(包 括提出方案者本人)就此方案进行表决. 如果50%或更多的海盗赞同此方案, 此方案就获得通过并据此分 配战利品. 否则提出方案的海盗将被扔到海里, 然后下一名最厉害的海盗又重复上述过程. 所有的海盗 都乐于看到他们的一位同伙被扔进海里, 不过, 如果让他们选择的话, 他们还是宁可得一笔现金. 他们 当然也不愿意自己被扔到海里. 所有的海盗都是有理性的, 而且知道其他的海盗也是有理性的. 此外, 没有两名海盗是同等厉害的——这些海盗按照完全由上到下的等级排好了座次, 并且每个人都清楚自己和 其他所有人的等级. 这些金块不能再分, 也不允许几名海盗共有金块, 因为任何海盗都不相信他的同伙 会遵守关于共享金块的安排. 这是一伙每人都只为自己打算的海盗. 最凶的一名海盗应当提出什么样的 分配方案才能使他获得最多的金子呢?

答案:如果轮到第四个海盗分配: 100, 0  轮到第三个: 99, 0, 1 轮到第二个: 98, 0, 1, 0 轮到第一个: 97, 0, 1, 0, 2, 这就是第一个海盗的最佳方案.

算法类

  • 用线性时间和常数附加空间将一篇文章的单词(不是字符)倒序.

答案:先将整篇文章的所有字符逆序(从两头起不断交换位置相对称的字符);然后用同样的办法将每个单词 内部的字符逆序. 这样, 整篇文章的单词顺序颠倒了, 但单词本身又被转回来了.

  • 如何快速找出一个32位整数的二进制表达里有多少个”1”? 用关于”1”的个数的线性时间? (给出一行C语言表达式, 判断给定的整数是否是一个2的幂.)

b & (b-1) 将数字的最右侧1变为0

  • 你在一个飞船上, 飞船上的计算机有n个处理器. 突然, 飞船受到外星激光武器的攻击, 一些处理器被 损坏了. 你知道有超过一半的处理器仍然是好的. 你可以向一个处理器询问另一个处理器是好的还是坏的. 一个好的处理器总是说真话, 一个坏的处理器总是说假话. 用n-2次询问找出一个好的处理器.

投票问题

对一批编号为1~100 全部开关朝上开的灯进行以下操作 凡是1 的倍数反方向拨一次开关2 的倍数反方向 又拨一次开关3 的倍数反方向 又拨一次开关. 问最后为关熄状态的灯的编号.

素数筛选 参考答案: 素数是关, 其余是开.

* 连续递增的数据, 拿出两个, 打乱顺序, 求拿出的两个.

估算

  • 一楼到十楼的每层电梯门口都放着一颗钻石, 钻石大小不一. 你乘坐电梯 从一楼到十楼, 每层楼电梯门 都会打开一次, 只能拿一次钻石, 问怎样才能拿到最 大的一颗?

参考答案: 她的回答是:选择前五层楼都不拿, 观察各层钻石的大小, 做到心中有数
后五层楼再选择, 选择大小接近前五层楼出现过最大钻石大小的钻石. 她至今也 不知道这道题的准确答案, “也许就没有准确答案, 就是考一下你的思路, “她如是说.  

类似的试题还有”你认为北京有多少公共汽车站? “等, 你可以随便给出答案, 5家或者5000家, 但你得有理由

  • 美国有多少辆加油站(汽车)?

参考答案: 这个乍看让人有些摸不着头脑的问题时, 你可能要从问这个国家有多少小 
汽车入手. 面试者也许会告诉你这个数字, 但也有可能说:”我不知道, 你来告诉 
我. “那么, 你对自己说, 美国的人口是2.75亿. 你可以猜测, 如果平均每个家庭 
(包括单身)的规模是2.5人, 你的计算机会告诉你, 共有1.1亿个家庭. 你回忆起 
在什么地方听说过, 平均每个家庭拥有1.8辆小汽车, 那么美国大约会有1.98亿辆 
小汽车. 接着, 只要你算出替1.98亿辆小汽车服务需要多少加油站, 你就把问题解 
决了. 重要的不是加油站的数字, 而是你得出这个数字的方法.

  • 假设时钟到了12点. 注意时针和分针重叠在一起. 在一天之中, 时针和分 针共重叠多少次? 你知道它们重叠时的具体时间吗?

参考答案: 这可以归结为速度差的相遇问题,分钟每走一圈都会和时针相遇,即一天中有几小时就会相遇几次. 重点是算相遇的具体时间.12点过后分针和时针的第一圈,他们的路程是一圈(60分),速度差是55分, 即时间是60/55.就是说第一圈他们大约在一点另5分.第二圈,他们的路程是120分钟,速度差还是55分, 他们相遇的时间大约是2点另10分.依次类推.

22次.   0点0分一次, 1点5分多一点(准确说是1×60/11分, 也就是5分27秒27)一次, 2点11分差一点(2×60/11分)一次 ……………… 10点55分差一点(10×60/11分)一次, 11点60分(也就是12点0分)一次, 然后是13点6分差一点一次…… 最后一次就是22点54分32秒73. 下一次重合就到了第二天的0点0分了.

关于”分别是几点”的假设推论:设a、b为同等时间内时针和分针分别走过的角度, 时针分针分别以A B代表, n表示分针已经第n次穿越时针 m[1, 正无穷) m为整数   X”m表示X的m次方b=12a a=b/12 =〉 A B次重合时 b=30(n+1)+30(n+1)1/12+30(n+1)1/121/12+……+30(n+1)*1/12”m (这里有个假设条件:当30(n+1)/12”m无限趋近于0时, 猜想认为此时AB重合. ) 整理后:b=30(n+1)+30(n+1)/12+30(n+1)/(12”2)+……+30(n+1)/12”m AB的重合时间:(n+1)时b/6分
但鉴于”分”一般都用正整数表示, 所以可以四舍五入取到个位或是将小数点后的数乘60转化为秒.
*

1:05之后有一次, 2:10之后有一次, 3:15之后有一次, 4:20之后有一次, 5:25之后有一次, 6:30之后有一次, 7:35之后有一次, 8:40之后有一次, 9:45之后有一次, 10:50之后有一次, 12:00整有一次. 24小时之中总共22次.

  • 1000!有几位数, 为什么?

参考答案:

Lg(1000!)=sum(Lg(n)) 
  n=1 
  用3 段折线代替曲线可以得到 
  10(0+1)/2+90(1+2)/2+900(2+3)/2=2390 
  作为近似结果, 好象1500~3000 都算对

  • 为1万亿个数排序需要多长时间?请说出一个靠谱的估计.

答案:这又是一个没有标准答案的题目. 目的是考察被面试者的创造性. 我们倾向于两位读者给出的简单 答案: 用归并排序法(Merge Sort)排序. 平均情况下为O(1,000,000,000,000 Log 1,000,000,000,000). 最差情况下为O(1,000,000,000,000 Log 1,000,000,000,000). 现在可以做到每秒10亿次的运算, 所以大约应需要3000秒.

  • Google每年收到多少份软件工程师的简历?这也是在考察应试者是否有能力把问题简单明确化, 并提出创造性的解决方案.

答案: 一个”量化报酬分析师”职位的求职者, 应该知道2008年Google雇佣了3400人. 估计其中75%, 即2550人, 应该是工程师, 并且 Google和哈佛的录取率类似, 即从申请人中取3%. 由此可知应该收到 大约85000简历(85000 x 3% = 2550)

方法题目

  • 某种药方要求非常严格, 你每天需要同时服用A、B两种药片各一颗, 不能多也不能少. 这种药非常贵, 你不希望有任何一点的浪费. 一天, 你打开装药片A的药瓶, 倒出一粒药片放在手心;然后打开另一个药瓶, 但不小心倒出了两粒药片. 现在, 你手心上有一颗药片A, 两颗药片B, 并且你无法区别哪个是A, 哪个是B. 你如何才能严格遵循药方服用药片, 并且不能有任何的浪费?

答案:把手上的三片药各自切成两半, 分成两堆摆放. 再取出一粒药片A, 也把它切成两半, 然后在每一堆 里加上半片的A. 现在, 每一堆药片恰好包含两个半片的A和两个半片的B. 一天服用其中一堆即可.

  • 烧一根不均匀的绳要用一个小时, 如何用它来判断半个小时? 烧一根不均匀的绳,从头烧到尾总共需要 1个小时. 现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?

参考答案:

半小时:两头同时烧. 一个小时十五分钟: 一根正常烧, 一根两头烧.

在两头烧完的一刹那, 把正常烧的那根的另一头也点燃. 这根烧完后是45分钟. 在烧完后的一刹那, 在把一根两头烧. 合计一个小时十五分钟.

  • 有7克、2克砝码各一个, 天平一只, 如何只用这些物品三次将140克的盐 分成50、90克各一份?

参考答案:

先用天平把140g分成两等份, 每份70g

在用天平把其中一份70g分成两等份, 每份35g

取其中一份35g放到天平的一端, 把7g的砝码也放到这一段, 再把2g的砝码放到天平的另一端. 从7g砝码一端移取盐到2g砝码的一端, 知道天平平衡. 这时, 2g砝码一端盐的量为20g. 把这20g和 已开始分出的未动一份70g盐放在一起, 就是90g, 其他的盐放在一起, 就是50g.

  • 你有四个装药丸的罐子, 每个药丸都有一定的重量, 被污染的药丸是没被污染的重量+1.只称量一次, 如何判断哪个罐子的药被污染了?

参考答案:

从第一盒中取出一颗, 第二盒中取出2 颗, 第三盒中取出三颗.  依次类推, 称其总量. 再根据总重量增加多少判断污染的药罐.

  • 如果你有无穷多的水, 一个3夸脱的和一个5夸脱的提桶, 你如何准确称出 4夸脱的水?

参考答案:

A、先用3 夸脱的桶装满, 倒入5 夸脱. 以下简称3->5) 在5 夸脱桶中做好标记b1, 简称b1). B, 用3 继续装水倒满5 空3 将5 中水倒入3 直到b1 在3 中做标记b2 
C、用5 继续装水倒满3 空5 将3 中水倒入5 直到b2 
D、空3 将5 中水倒入3 标记为b3 
E、装满5 空3 将5 中水倒入3 直到3 中水到b3 
结束了, 现在5 中水为标准的4 夸脱水.

  • 你有一桶果冻, 其中有黄色, 绿色, 红色三种, , 闭上眼睛选出同样颜色 的两个, 抓取同种颜色的两个. 抓取多少个就可以确定你肯定有两个同一颜色的果冻? (抽屉原理)

参考答案: 4个而除了第一种情况, 其他的情况你都可以确定有两个同种颜色的果冻 抓第四个的时候, 不管是什么颜色的果冻都可以确定下来你的问题了 所以是最少四个果冻

  • 一个屋子有一个门(门是关闭的)和3盏电灯. 屋外有3个开关, 分别与这 3盏灯相连. 你可以随意操纵这些开关, 可一旦你将门打开, 就不能变换开关了. 确定每个开关具体管哪盏灯.

参考答案: 先在门外打开一个开关, 等一会儿, 然后关掉它, 再另开一个开关, 再走到屋内, 热而不亮的一个灯泡是 第一个开关所控制, 亮的便是第二个, 不亮又不热的便是第三个开关所控制的了.

  • 假设你有8个球, 其中一个略微重一些, 但是找出这个球的惟一方法是将 两个球放在天平上对比. 最少要称多少次才能找出这个较重的球?

参考答案: 两次. 第一次:各取3个分放天平两边, 如平衡, 则重的在另两个中, 再把另两个分放天平两边, 哪边重些哪边就是那个重的球; 第二次:在不平衡的情况下, 把稍重的一边取两个分放天平两边, 如平衡则另一个为 稍重的, 如不平衡重的一边为稍重的一个.

  • 分金条问题:

你让某些人为你工作了七天, 你要用一根金条作为报酬. 这根金条要被分成七块. 你必须在每天的活干完后交给他们一块. 如果你只能将这根金条切割两次, 你怎样给这些工人分?

答案: 切两次, 把金条分成1/7, 2/7, 4/7三份, 编号a, b, c
第一天, 给a 第二天, 给b, 拿回a 第三天, 给a, 第四天, 给c, 拿回a, b 第五天, 给a 第六天, 给b, 拿回a 第七天, 给a

  • 猴子搬香蕉问题: 一个小猴子边上有100根香蕉, 它要走过50米才能到家, 每次它最多搬50根香蕉, 每走1米就要吃掉一根, 请问它最多能把多少根香蕉搬到家里.

答案: 猴子先搬50个走的25米处, 吃了25根香蕉, 然后放在原地, 回去搬另外50根香蕉, 再搬到25米处, 然后休息五分钟, 搬起25米处的50根香蕉往家走, 回到家还剩25根香蕉.

  • 飞机加油问题: 每个飞机只有一个油箱, 飞机之间可以相互加油(注意是相互, 没有加油机) 一箱油可供一架飞机绕地球飞半圈. 为使至少一架飞机绕地球一圈回到起飞时的飞机场, 至少需要出动几架飞机? (所有飞机从同一机场起飞, 而且必须安全返回机场, 不允许中途降落, 中间没有飞机场)

答案: 先三架飞机起飞, 飞到地球1/8处, 三架飞机都还有3/4的油, 其中一架给另外两架每架1/4的有, 然后飞回, 此时, 另外两架满油; 这两架飞机飞到地球的1/4处时, 两架飞机都有3/4的油, 把其中一架的1/4的油给令一架, 飞回, 此时, 最后一架满油; 当最后一架飞机飞到地球一半时, 在终点反方向去一架飞机, 他们在离终点1/4处相遇, 此时, 第一架飞机没油, 第二架还有2/4的油, 给第一架1/4的油, 回飞;此时, 终点再起飞一架飞机, 反方向飞来;
三架飞机在离终点1/8处相遇, 前两架无油, 后一架还有3/4的油, 分别给另两架1/4的油, 一块回飞, OK了, 如果基地可以加油的话, 三架就ok了, 如果不能, 就得5架.

理解不了

一对夫妇邀请N-1对夫妇参加聚会(因此聚会上总共有2N人). 每个人都和所有自己不认识的人握了一次手. 然后, 男主人问其余所有人(共2N-1个人)各自都握了几次手, 得到的答案全部都不一样. 假设每个人都 认识自己的配偶, 那么女主人握了几次手?

答案:握手次数只可能是从0到2N-2这2N-1个数. 除去男主人外, 一共有2N-1个人, 因此每个数恰好出现 了一次. 其中有一个人(0)没有握手, 有一个人(2N-2)和所有其它的夫妇都握了手. 这两个人肯定是一对 夫妻, 否则后者将和前者握手(从而前者的握手次数不再是0). 除去这对夫妻外, 有一个人(1)只与(2N-2)握过手, 有一个人(2N-3)和除了(0)以外的其它夫妇都握了手. 这两个人肯定是一对夫妻, 否则后者将和前者握手(从而前者的握手次数不再是1). 以此类推, 直到握过N-2次手的人和握过N次手的人配成一对. 此时, 除了男主人及其配偶以外, 其余所有人都已经配对. 根据排除法, 最后剩下来的那个握手次数为N-1的人就是女主人了.

这对夫妇应该认识所有人啊??

逻辑计算题

  • 有一牧场, 已知养牛27头, 6天把草吃尽;养牛23头, 9天把草吃尽. 如果养牛21头, 那么几天能把 牧场上的草吃尽呢? 并且牧场上的草是不断生长的.”

答案:设牛每天吃掉x, 草每天长出y, 原来有牧场的草量是a  a=(27x-y)*6=(23x-y)*9 可解出y=15x,a=72x,所以a=(21x-y)*12,所以需要12天.

  • 一个商人骑一头驴要穿越1000公里长的沙漠, 去卖3000根胡萝卜. 已知驴一次性可驮1000根胡萝卜, 但每走一公里又要吃掉一根胡萝卜. 问:商人共可卖出多少胡萝卜?

答案:商人带驴驮1000根胡萝卜, 先走250公里, 这时, 驴已吃250根, 放下500根, 原地返回, 又吃掉250根. 商人再带驴驮1000根胡萝卜, 走到250公里处, 这时, 驴已吃250根, 再驮上原先放的500根中的250根, 继续前行至500公里处, 这时, 驴又吃250根, 放下500根, 剩250根返回250公里处, 在驮上250公里处剩下的250根返回原地, 这时驴又吃250根. 商人再带驴驮1000根胡萝卜, 走到500公里处, 这时, 驴已吃500根, 再驮上原先放的500根, 走出沙漠, 驴吃掉500根, 还剩500根.

  • 10箱黄金, 每箱100块, 每块一两. 有贪官, 把某一箱的每块都磨去一钱. 请称一次找到不足量的那个箱子

答案: 第一箱子拿1块, 第二箱子拿2块, 第n箱子拿n块, 然后放在一起称, 看看缺了几钱, 缺了n钱就说明是第n个箱子

  • 汽车加油问题 一辆载油500升的汽车从A开往1000公里外的B, 已知汽车每公里耗油量为1升, A处有无穷多的油, 其他任何地点都没有油, 但该车可以在任何地点存放油以备中转, 问从A到B最少需要多少油

解答: 严格证明该模型最优比较麻烦, 但确实可证, 大胆猜想是解题关键. 题目可归结为求数列an=500/(2n 1)   n=0,1,2,3……的和Sn什么时候大于等于1000, 解得n>6当n=6时, S6=977.57,所以第一个中转点离起始位置距离为1000-977.57=22.43公里. 所以第一次中转之前共耗油22.43*(27 1)=336.50升此后每次中转耗油500升, 所以总耗油量为7500 336.50=3836.50升.

  • 一个小猴子边上有100 根香蕉, 它要走过50 米才能到家, 每次它最多搬50 根香蕉, 每走1米就要 吃掉一根, 请问它最多能把多少根香蕉搬到家里.

解答: 设 小猴从0 走到50, 到A 点时候他可以直接抱香蕉回家了, 可是到A点时候他至少消耗了3A的香蕉( 到A, 回0, 到A), 一个限制就是小猴只能抱50 只香蕉, 那么在A 点小猴最多49 只香蕉.100-3A=49, 所以A=17. 这样折腾完到家的时候香蕉剩100-3A-(50-A)=50-2A=16.

  • [腾讯面试题(统计数字出现的次数问题)][4]:

0 1 2 3 4 5 6 7 8 9


在横线上填写数字, 使之符合要求. 要求如下:对应的数字下填入的数, 代表上面的数在下面出现的次数, 比如3下面是1, 代表3要在下面出现一次.

正确答案是:

1
2
0 1 2 3 4 5 6 7 8 9
6 2 1 0 0 0 1 0 0 0

有些尴尬的问题

  • 地球上有多少个点, 使得从该点出发向南走一英里, 向东走一英里, 再向北走一英里之后恰好回到了起点?

答案:”北极点”是一个传统的答案, 其实这个问题还有其它的答案. 事实上, 满足要求的点有无穷多个. 所有距离南极点1 + 1/(2π)英里的地方都是满足要求的, 向南走一英里后到达距离南极点1/(2π)的地方, 向东走一英里后正好绕行纬度圈一周, 再向北走原路返回到起点. 事实上, 这仍然不是满足要求的全部点. 距离南极点1 + 1/(2kπ)的地方都是可以的, 其中k可以是任意一个正整数.

  • 1, 11, 21, 1211, 111221, 下一个数是什么?

 

答案:下行是对上一行的解释 所以新的应该是3个1 2个2 1个1 :312211 

  • 一群人开舞会, 每人头 上都戴着一顶帽子. 帽子只有黑白两种, 黑的至少有一顶. 每个人都能看到其它人帽子的颜色, 却看不到自己的. 主持人先让大家看看别人头上戴的是什幺帽子, 然后关灯, 如果有人认为自己戴的是黑帽子, 就打自己一个耳光. 第一次关灯, 没有声音. 于是再开灯, 大家再看一遍, 关灯时仍然鸦雀无声. 一直到第三次关灯, 才 有劈劈啪啪打耳光的声音响起. 问有多少人戴着黑帽子?

答案:3 . 如果只有1人戴黑帽子, 那么第一次关灯他就会打自己耳光;如果有2人, 第二次关灯他们就会打自己耳光;有n人戴帽子的话第n次关灯他们就会打自己耳光.

逻辑题

  • 两个人猜数问题 教授选出两个从2到9的数, 把它们的和告诉学生甲, 把它们的积告诉学生乙, 让他们轮流猜这两个数, 甲说:”我猜不出”, 乙说:”我猜不出”, 甲说:”我猜到了”,    乙说:”我也猜到了”,
    问这两个数是多少?

解答: 3和4. 设两个数为n1, n2, n1> =n2, 甲听到的数为n=n1 n2, 乙听到的数为m=n1*n2, 证明n1=3, n2=4是唯一解. 证明:要证以上命题为真, 不妨先证n=7

  1. 必要性:

  2. n> 5   是显然的, 因为n <4不可能, n=4或者n=5甲都不可能回答不知道

  3. n> 6   因为如果n=6的话, 那么甲虽然不知道(不确定2 4还是3 3)但是无论是2, 4还是3, 3乙都不可能说不知道(m=8或者m=9的话乙说不知道是没有道理的)

  4. n <8   因为如果n> =8的话, 就可以将n分解成   n=4 x   和   n=6 (x-2), 那么m可以是4x也可以是6(x-2)而4x=6(x-2)的必要条件是x=6即n=10, 那样n又可以分解成8 2, 所以总之当n> =8时, n至少可以分解成两种不同的合数之和, 这样乙说不知道的时候, 甲就没有理由马上说知道. 以上证明了必要性.

  5. 充分性     当n=7时, n可以分解成2 5或3 4
        显然2 5不符合题意, 舍去, 容易判断出3 4符合题意, m=12, 证毕

于是得到n=7   m=12   n1=3   n2=4是唯一解.

* n个人围城一圈握手问题, 不能交叉, 不能落单,求一共有多少种握手数目(卡特兰数推导).

* 54张扑克, 抽去大小王, 均分给4个人, 问红桃A和黑桃A在同一个人手中的概率.

[1]: https://www.nowcoder.com/discuss/61379

[2]: http://blog.csdn.net/yl442483523/article/details/43271497

[3]: http://blog.csdn.net/u010794180/article/details/48897489

[4]: http://blog.csdn.net/u012333003/article/details/24627495