数学题目:“知道不知道”

知道不知道

题目:

老师从2到49之间选择了两个数字(允许重复)。将两数之和写在一个纸条上交给了 A,将两数之积写在一个纸条上交给了 B,(随后他们各自查看了自己纸条上的数字)。
A 对 B 说:“我知道(确信)你不知道(两个数分别是多少)!”
B 对 A 说:“哦~ 那我知道(两个数分别是多少)了!”
A 对 B 说:“哦~ 那我也知道了!”
同学们说:“哦~ 那我们也知道了!”

问:两个数分别是多少?

初步分析

A 从自己拿到的两数之和就能确定 B 无法(通过老师给的两数之积)推断出两数。
B 对 A 的回答印证了这一点:“哦,那我知道了。”
B 的回答的意思是,他一开始,的确如 A 所说,并不能仅依靠两数之积推断出两数。但是,事情却在他听到 A 的话的瞬间出现了转机。A 的话是一个十分有用的线索,以至于它帮助本来无法推断出两数的 B 成功推断出了两数!

最初

让我们将时间回溯到 A 开口说话之前:A 与 B 刚从老师的手里接过写着两数之和与两数之积的小纸条,看着自己手里的数字,他们陷入了思考。

B 意识到他推断不出这两个数,因为他看到的是一个类似于12,18,42等这样的数字,例如,12 = 2 × 6,同时,12 = 3 × 4,两种情况都是可能的,因此无法完成唯一的推断。
假如 B 拿到的是一个类似于15,21,35这样的数字情况就会不同,因为这些数字都只有一种通过乘法分解的方式,15 = 3 × 5,21 = 3 × 7,它们都可以分解为两个“质数”的乘积的形式,这种分解的情况是唯一的,以至于可以立刻推断出两个因子,即两个数字分别是多少。然而可惜的是,B 拿到的并不是这样一个数字。B 作为当事人,清楚地知道自己拿到的不是这样一个数字,也正因此,他无法通过两数之积推断出两数。可是 A 并没有看到 B 手里的数字,他又是凭什么做出的判断呢?

让我们再将视角转向 A,当 A 看到两数之和时,他也没能仅仅通过两数之和推断出这两个数,后面的对话印证了这一点。
实际上只要 A 拿到的数字不是5,他就不可能推断出。任何一个大于5的整数,当将其分解为两个大于1的整数之和的形式时,都会有超过1种的分解方式。例如,8 = 2 + 4,8 = 3 + 5,8 = 4 + 4。我们还可以发现,一个数越大,这种分解的方式也就越多。

综上,当两个人刚拿到小纸条的时候,他们都无法从各自所掌握的唯一一条线索中推断出两数,直到他们开口说话。

“我知道你不知道!”

虽然 A 根据自己所掌握的两数之和无法推断出两数,但这个数字却带给了他很多遐想,以至于他信誓旦旦地开了口。A 对 B 宣称:“我知道你不知道”,为了避免歧义,我们将这句话转换为:‘我能断定你无法推断出这两个数分别是多少“。
这正是这道题目最能引人入胜的地方!
A 的确能够断定 B 无法推断出这两个数,但仅限于 A 开口之前!多么的矛盾啊!

听到 A 的宣言的 B 和其他同学在第一时间就会陷入沉思:你凭什么能够断定?乃至于你到底从自己的手里看到了什么?
让我们来做一个小尝试。假如 A 拿到的数字是10,他能做出上述的宣言么?答案是不能。因为10 = 3 + 7,A 并不能保证这两个数字不是3和7,而万一碰巧真的是3和7的话,B 拿到的数字就是21了,而21 = 3 × 7是一种唯一的分解形式,B 将可以一口喊出两个数字。
这个尝试说明了 A 拿到的一定不是像10这样的数字。因为像10这样的数字可以分解为两个质数之和的形式,这意味着 B 拿到两个质数之积,从而 B 可以立刻推断出两数。
那么像10这样的数字都有哪些呢?直觉告诉我们一个方法来找出这些数字:先找出所有质数,再两辆求和。而我们也确实可以这么干。
质数:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

不包含2的两两之和:6 8 10 12 14 16 18 20 22 24 26 28 30… 实际上,“哥德巴赫猜想”宣称大于等于6的所有偶数都可以写成两个质数的和的形式,这一猜想至今没有被证实和证伪,在100以内,这个猜想的描述无疑是成立的。至此,我们和 B 都可以判断出 A 拿到的并不是一个偶数!也就是说,A拿到的是一个奇数。

再来看包含2的两两之和:5 7 9 13 15 19…
A 拿到的奇数也不在这个范围内。
那么 A 拿到的就只能是这些数字了:
11 17 23 27 29 35 37 41 47 51 53 57 59 65 67 71 77 79 83 87 89 93 95 97

综上,A 的宣言“我知道你不知道”,实际也同时宣布了:“我拿到的是这些数字中的一个”!
一个真命题在被说出来的一瞬间竟然变得不再是对的,类似的情况还有”我知道你不知道我的乳名叫阿瞒!“,“我很聪明!“

“哦~ 那我知道了!”

A 的宣言成功地把一个真命题变成了一个假命题!而 B 用来回应 A 的同样是一句宣言。
“哦,那我知道了!” ,换句话说, “我本来是不知道的,但多亏了你提供的线索,让我结合自己已经掌握的线索成功推断出了两个数字分别是什么!”
B 的宣言同样也是一条线索,让我们来进一步解读它。

前文已经分析得知,B 得到的两数之积并不是两个质数的乘积,当然它也不可能是一个质数,那么它当然就是两个以上(质)数的乘积。
我们需要多做几个小尝试。
假如 B 拿到的是12,12 = 2 × 2 × 3 = 2 × 6 = 3 × 4。在 A 发言之前 B 显然无法推断出两数,因为有两种可能性:2与6,或者3与4。这时 A 宣称了 A 拿到的是{11,17,23…}等数字中的一个,无论是2 + 6,还是3 + 4的结果都不在 A 所声明的集合中。因此,B 拿到的数字一定不是12。
假如 B 拿到的是18,18 = 2 × 9 = 3 × 6, 2 + 9 = 11 符合 A,3 + 6 = 9 不符合 A,由此,B 可以推断出两数为2与9。以下是更多的尝试:
20 = 2 × 10 = 4 × 5, 2 + 10 = 12 不符合,4 + 5 = 9 不符合,两个偶数的拆分一定不符合。
24 = 3 × 8, 3 + 8 = 11 符合
28 = 4 × 7, 4 + 7 = 11 符合
30 = 2 × 15 = 3 × 10 = 5 × 6, 2 + 15 = 17 符合,3 + 10 = 13 不符合,5 + 6 = 11 符合。两组符合,非解。
36 = 3 × 12 = 4 × 9, 3 + 12 = 15 不符合,4 + 9 = 13 不符合
40 = 5 × 8, 5 + 8 = 13 不符合
42 = 2 × 21 = 3 × 14 = 6 × 7, 2 + 21 = 23 符合,3 + 14 = 17 符合, 6 + 7 = 13 不符合
44 = 4 × 11, 4 + 11 = 15 不符合
48 = 3 × 16, 3 + 16 = 19 不符合
50 = 2 × 25 = 5 × 10, 2 + 25 = 27 符合,5 + 10 = 15 不符合
52 = 4 × 13, 4 + 13 = 17 符合
54 = 2 × 27 = 3 × 18 = 6 × 9, 2 + 27 = 29 符合,3 + 18 = 21 不符合, 6 + 9 = 15 不符合
经过一系列尝试,我们发现,B 拿到的数字的所有分解组合中,必须有一组其相加之和在 A 所宣称的集合中,且只能有一组其相加之和在 A 所宣称的集合中。一个很好的例子就是30这个数字,如果拿到它,B 将同时面临2与15,或者5与6两种情形,最终无法抉择。我们将上面的尝试进行一定的归纳整理,其中左侧为两数之积,右侧为两数之和:
18 对应 11
24 对应 11
28 对应 11
50 对应 27
52 对应 17
54 对应 29
76 对应 23
92 对应 27
96 对应 35
98 对应 51
100 对应 29
112 对应 23
124 对应 35
140 对应 27
144 对应 51
我们并不打算列出所有的可能的 B 手中的情形,这并非是必要的,我们会在后文中对此进行解释。

综上,只要 B 所拿到的纸条上写着的是类似上表中左边一列中的任何一个数字,他就可以在得到 A 给的线索后立刻将两个数字推断出来!
那么,B 给出的线索就是:“我拿到的数字是上表左边一列中的一个”!值得补充的是,A 拿到的数字是上表右边一列中的一个。

“哦~ 那我也知道了”

在上文的分析中,我们已经知道了 A 拿到的是列表右边一列中的数字。实际上,A 与 B 所拿的数字积与和的可能情形,也正是这个列表中列出来的每一行。
我们与 A 都在 B 开口之后掌握了这个列表,然而,相比于我们,A 的手中却自始至终多掌握着一条线索:两数之和!

在听到 B 的宣言后,A 得出了这个列表,并开始在右边一列中寻找自己纸条上的数字。不出意料地,A 找到了它!出乎意料地,A竟然只找到了一个它!!

为了便于理解,我们再次进行简单的分析尝试。
假设 A 手里的数字是11,那么 A 当然从右边一列找到了11,可是问题来了,11 = 2 + 9, 11 = 3 + 8, 11 = 4 + 7, 这三种情形将都是可能的,即 A 无法确定 B 手中拿到的到底是18, 24, 28三个数中的哪一个,因而 A 还是无法推断出两个数。
A 只在一种情况下可以通过查表确定两数,那就是 A 在右边一列中只能找到一个自己手中的数字。而万幸的是,A 的确遇到了这种情况:他拿到的数字是17!

最终,我们以及班里的其他小伙伴,也根据 A 的第二次声明,推断出了 A 手里掌握的是这么一个最特殊的数字!

需要补充的是关于表格未列出的部分的讨论。实际上,我们并不需要完整地列出整个表格。
对于表格右边一列的任意一个数字,我们都可以通过简单的拆分遍历来验证它是否只在右边一列出现了一次,而不需要知道它具体出现了几次,这将大大简化我们的计算。
52与17这对组合出现于第5行,我们可以很快地对它进行验证,我们会发现,17的任何其它拆分结果的乘积都不出现在表格的左边一列,换句话说,如果这道题有答案,那么答案一定是它。于是乎剩下的计算便成为了已知结果来验证结果,这又将大大简化我们的计算。

“哦~ 那我们也知道了!”

最终,我们和班里的小伙伴们都知道了答案。

这可真是终极一班啊…

写在最后

笔者认为这道题目的有趣之处正是在于它所包含的逻辑的嵌套。

当然寻找答案过程中的一步步100以内的加减乘除运算也是很值得享受的。

没有具体查证这道题目的出处,如有侵权,请及时通知!

这应该算是一道数论题目吧,然而最初竟是在一本脑筋急转弯的书上看到,说实话,它真的需要脑筋转三四个弯~ 感谢当年给我出这个脑筋急转弯的小伙伴!

最近开始学习计算机编程,发现这竟然也可以作为一道编程题目,于是写了一个小脚本再次验证了答案,应该没毛病~

文章只经过笔者本人的检查核对,如有错误或容易引起歧义的地方,欢迎留言批评指正!

猜你喜欢

转载自blog.csdn.net/mywang88/article/details/79944712
今日推荐