一个猜数字游戏

Posted izlyforever

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个猜数字游戏相关的知识,希望对你有一定的参考价值。

数学老师想好了两个自然数 \\(m,n\\) 满足 \\(2 \\leq m \\leq n \\leq 100\\) ,他把 \\(m,n\\) 的和 \\(s\\) 告诉了 \\(S\\) 同学,把 \\(m,n\\) 的积 \\(p\\) 告诉了 \\(P\\) 同学,他们都是聪明诚实的学生。进行了下面对话

\\(S\\): 我不知道 \\(m,n\\) 的值,但我知道你也不知道。
\\(P\\): 现在我知道了。
\\(S\\): 现在我也知道了。
请问 \\(m,n\\) 的值。

  1. 由第一句话,我们知道 \\(s \\geq 6\\),且 \\(p\\) 中无大于或者等于 53 的质因数。但是 \\(S\\) 是如何知道的呢,可见 \\(s \\leq 54\\)。对 数 \\(6 \\to 54\\) 逐一检查发现,除了\\(A = \\lbrace 11,17,23,27,29,35,37,41,47,51,53 \\rbrace\\)的其他元素外,其余每个数都可以表示成两个素数的和,因此从第一句话知道,$ s \\in A$。

  2. 刚刚推理 \\(P\\) 同学当然也能完成。由于 \\(A\\) 中的元素全是奇数,因此,若 \\(p = 2^k \\cdot (2v+1), k \\geq 0, v \\geq 0\\) 或者 \\(p = 2^k \\cdot (2v+1)(2j+1), k \\geq 0, v \\geq 0, j \\geq 0\\)\\(P\\) 同学就能确定的知道答案。

  3. \\(S\\) 同学最后也知道了 \\(m,n\\) 的值,说明在 \\(s\\) 所有分解 \\(s = m+ n, 2 \\leq m \\leq n \\leq 100\\) 中,且有一种满足 \\(xy = 2^k v\\)
    检查 \\(11 = 4+7 = 3+8\\), \\(23 = 4 + 19 = 7+16\\), \\(27 = 4+23 = 8+19\\), \\(35=4+31=16+19\\), \\(37 = 8+29 = 5+32\\), \\(47= 4 + 43 = 16+31\\), \\(51 = 4+47 = 8+43\\)
    又因为

\\[ 29 = 4 + 25 = 13 +16,\\; 41 = 4+37 = 16 + 25,\\; 53 = 16 +37 = 21 + 32 \\]

其中 \\(4 \\times 25 = 100 = 20 \\times 5\\), \\(20+5 =25 \\notin A\\), \\(16 \\times 25 = 400 = 80 \\times 5\\), \\(80+5 =85 \\notin A\\), \\(21 \\times 32 = 672 = 7 \\times 96\\) ,\\(7+96 =103 \\notin A\\)
因此,只可能 \\(s=17\\)

\\[ 17 = 2+15 = 3+14 = 4+13 = 5+12 = 6+11 = 7 +10 = 8+9 \\]

其中只有 \\(17 =4 + 13\\) 满足 \\(P\\) 的断言,因此 \\(m = 4,n=13\\)

此题是我高三(2011 年)在《奥赛金牌之路》中所见,实在很吊,一直铭记于心,特此记录。

以上是关于一个猜数字游戏的主要内容,如果未能解决你的问题,请参考以下文章

C语言 猜数字游戏代码

用C#编写猜数字游戏,

java猜数字游戏代码

Leetcode-299 猜数字游戏

猜数字游戏网页版

c语言小游戏:猜数字 随机一个1-100之间的数,根据数据输入进行提示