C++面试题 考考大家

1-30间有两个数,甲知道两数之和,乙知道两数之积,首先甲问乙:你知道两个数吗?乙说不知道,又反问甲,甲也说不知道,然后乙说:我知道了,甲也说自己知道了,求这两个数是什么

应该是1和6
第一次甲问乙,乙不知道,因为乙有两种选择,1和6或2和3。假设这两个数是2和3,那么甲就应该是:5, (1+4) (2+3),如果是1和4的话,那么乙一定知道,然而乙却不知道,所以甲就只剩下2和3了,第二次乙问甲时,而甲却说不知道,那么这两个数肯定不是2和3了,所以乙就知道了,就是1和6。追问

答案是这样的,但是我还是没搞懂,比如说1_30之间还可以12,3 4和2 6 为什么要是1和6

追答

简单说来就是,甲乙两人都不确定,且积必须两种可能(甲先问的,后来立刻知道),和有多种可能,这样才能在对方说了知道后,自己也立刻知道。其他情况,比如你说的3,4对甲来说,和是7(可能性很多),积却为12(可能性不止两种,像1,12或2,6或3,4)。2,6道理也是同样,应该理解了吧。

温馨提示:答案为网友推荐,仅供参考
相似回答