Back to Posts

双人猜数问题

Posted in 逻辑分析问题

题目描述

C 随机产生了两个不同的正整数,分别交给了 A 、 B ,并让两人猜测谁手中的数更大。

于是便产生了一下的对话

A:我不知道
B:我也不知道
A:我仍然不知道答案
B:我也不知道啊
A:我现在仍然不知道答案
B:我还是不知道
A:继续吧,我还是不知道
B:我也不知道
A:好的,我现在知道了
B:那我也知道了,并且我知道咱俩手中的数字具体是啥了
A:那我也知道具体的数字了

A、B的人设都是非常机智,我的问题是:A、B手中的数字分别是什么?

Solution

上面的整个对话一直是两个人互相说不知道,看起来丝毫没法入手。设valA,valBA、B手中的数字

第一轮:

A说不知道:显然会说不知道,很少第一轮就说知道。那A什么时候知道呢?手里是1的时候知道。所以valA>1

B说不知道:如果B手中的数字如果是1 or 2,因为两个正整数不相同,B都会说知道了,所以valB>2

第二轮:

A说不知道:那么A手中的数字就既不是2(valB>2),也不是3(两个数不同,如果A是3,B只能大于3),valA>3

B说不知道:那么B手里的数不是3也不是4valB>4

……

第四轮:

B说不知道:那么valB>8

第五轮:

A说知道了:那么A手中的数字要么是8,要么是9

B说知道了:这个时候B意识到了这一点,发现自己的数字一定是大于A的,但是他现在说自己知道具体什么了,就可以推出B手中的数字是9,A手中的数字是8,因为如果B手中的数字是大于9的,那B是无法知道A具体是什么的。

故答案是:A手中的数字是8,B手中的数字是9

这是一个老的版本了,Matrix 67 在blog里给出了一个新的版本,其实也没改多少就是改了一下游戏环境,加了个也很聪明的C,这里稍微提一下。

题目大意

A 、 B 两人在C 的带领下玩一个游戏。 C 向两人说:“一会儿我会随机产生两个不同的形如 :n – (1/2)^k(1/2)^k+r 的数(n^k是n的k次方的意思,博客不支持数学公式,不好意思),其中 n 、 k 是正整数, r 是非负整数。然后,我会把这两个数分别交给你们。你们每个人都只知道自己手中的数是多少,但不知道对方手中的数是多少。你们需要猜测,谁手中的数更大一些。”这里,我们假设所有人的逻辑推理能力都是无限强的,并且这一点本身也成为了共识。 C 按照规则随机产生了两个数,把它们交给了 A 和 B ,然后问他们是否知道谁手中的数更大。于是有了这样的一段对话。

注意:这个时候,C也是很聪明的。

A :我不知道。
B :我也不知道。
A :我还是不知道。
B :我也还是不知道。
C :这样下去是没有用的!可以告诉你们,不管你们像这样来来回回说多少轮,你们仍然都没法知道,谁手中的数更大一些。
A :哇,这个信息量好像有点儿大!不过,即使知道了这一点,我还是不知道谁手中的数更大。
B :我也还是不知道。
A :我继续不知道。
B :我也继续不知道。
C :还是套用刚才的话,不管你们像这样继续说多少轮,你们仍然没法知道谁手中的数更大。
A :哦……不过,我还是不知道谁手中的数更大。
B :而且我也还是不知道。我们究竟什么时候才能知道呢?
C :事实上啊,如果我们三个就像这样继续重复刚才的一切——你们俩互相说一堆不知道,我告诉你们这样永远没用,然后你们继续互说不知道,我继续说这不管用——那么不管这一切重复多少次,你们仍然不知道谁手中的数更大!
A :哇,这次的信息量就真的大了。只可惜,我还是不知道谁的数更大一些。
B :我也还是不知道。
A :是吗?好,那我现在终于知道谁的数更大了。
B :这样的话,那我也知道了。而且,我还知道我们俩手中的数具体是多少了。
A :那我也知道了。

那么 , C 究竟把哪两个数给了 A 和 B ?

Solution

我们发现旧的版本的游戏是正整数,也就是说游戏环境是这样的:

A、B没说一个不知道,就会往前跳一格,最终推理出答案。

而在新的版本中A,B的游戏环境则是变成了这个样子:

同样的,A、B没说一个不知道,就会往前跳一格,但是我们发现在每个正整数区域都会有无限个数的小格,这时C就派上了用处,C每说一句“你们这样是没有用的,这样永远也玩不完”,A和B就会跳到下一层来继续推理,知道推出答案。

当然,这个比上一个题更难推导,这里就直接给出答案了:

A手中的数字是(5/4),B手中的数字是(11/8)。

Read Next

几个几何证明数学公式的栗子