某讯往年笔试题思路

来源:互联网 发布:淘宝the gas 编辑:程序博客网 时间:2024/06/10 21:19

题目如下:

1-20的两个数把和告诉A,积告诉B,A说不知道是多少,B也说不知道,这时A说我知道了,B接着说我也知道了,问这两个数是多少?

网上已经很多人写了思路了


在此记录一下自己的思考过程:

我们假设两个数X,Y是可以相同的,且X+Y=H,X×Y=J。

分析条件可以得到:

A知道H,且A说不知道两个数是多少,这就说明H必须可以由“至少两种组合”相加而得(如5=1+4=2+3)

那么只有一种组合可能的H便被排除,2=1+1和3=1+2。(1自动排除)

B知道J,且也说不知道两个数是多少,那么,J也必须可以由“至少两种组合”相乘而得(如6=1×6=2×3)。

那么只有一种组合可能的J便被排除,即J为质数的情况,3、5,7,11,13,17,19(2、3已经被排除)。


下面进入正题,

B说”不知道X,Y是多少“,便提供了J非质的信息。

A根据这个信息,得到了两个数。

这说明A据此排除掉了H可能的组合中的某一些,只剩下一种可能。

B在自己说了“不知道X,Y是多少”后,A说知道了。

B据此排除掉J的可能组合中的某一些,只剩下一种可能。


我们逐一来分析不同H的可能:

H=4:

从A的立场来看,A知道的信息:

(X,Y)={(1,3)、(2,2)},J的值可能为3、4。

这种情况下,B说“不知道”,说明J不是质数,因此J=4,那么A便知道了X=Y=2。

我们再从B的立场来看B知道的信息:

在X=Y=2的条件下,此时J=4

(X,Y)={(1,4)、(2,2)},H的值可能为4、5。

当H=4时,(X,Y)={(1,3)、(2,2)}

当H=5时,(X,Y)={(1,4),(2、3)}

B知道,在自己说了“不知道”后,提供了J非质的信息,且A据此“知道了”。B就明白了,A所知道的H的可能组合中,必须有一个组合的J为质数,即H=4时的组合,又根据J=4,(1,3)不成立,所以B也就在A说“知道了”后“知道了”。

H=5:

A的信息:(X,Y)={(1,4)、(2,3)},无质数J可能。

H=6:

A的信息:(X,Y)={(1,5)、(2,4)、(3,3)},有质数J可能,但无法排除(3,3)。

H=7:

A的信息:(X,Y)={(1,6)、(2,5)、(3,4)},无质数J可能。

…………

可以推断,当H越大,H的可能组合就越多,有质数J的组合最多只有1种,那么后续的H都将不符合题意。

故最终结果为:X=2,Y=2


X和Y不允许相同的情况同理,答案是(2、3),(2,4)。