1-20的两个数把和告诉A,积告诉B,
(2011-05-21 22:04:37)
标签:
腾讯笔试it |
分类: IT专业分享 |
转载:
http://apps.hi.baidu.com/share/detail/33584415
题目:1-20的两个数把和告诉A,积告诉B,
A说不知道是多少,
B也说不知道,
这时A说我知道了,
B接着说我也知道了,
问这两个数是多少?
分析:
这是一道逻辑性非常强,由于这两个数的范围是1-20所以
他们的和记着S:S范围为2<=S<=40,积记着M
A知道S,B知道M
1.
2.
我们把M肯定不在这里面数的集合为P={1,2,3,5,7,11,13,17,19,23,29,31,37,....., 340,360,380...}
3.
假设S可以分成以下几组和:x1+y1, x2+y2,..,
在A看来,A自己知道S,所以A推出B的那个M可能数是:x1*y1,x2*y2
但由于B说不知道时,A能知道,这里就要想想,A凭什么根据知道?也就是x1*y1,x2*y2,…这些数中只有一 个数不在P集合中,其他的都在集合P中,就是B如果知道了这个数,就可以得出结果出来的。只有一个数不是这类数。到此为止,A根据B说“不知道”,A是这 样推断,M不等于其他的n-1数(这些数在P集合中)如果M为那(n-1)个数里面的一个话,那么B肯定不会说不知道。
那么现在就要找什么样的S满足:S拆成多组数之和:如:
X1+y1 = S
X2+y2 = S
…
Xn+yn = S
且满足在这n组中只有1组数的积(xi*yi)Mi在集合不在P中。
现在就可以一一分析了:
S=4:
s=5
s=6 1+5=6,2+4, 3+3,; 1*5 = 5, 2*4=8,3*3=9,有两个数不在P中,不符合
s=7 1+6,3+4,2+5; 6,12,10,3个数都不在P中
。。。。
当S=37,现在又不同了,20+17,18+19,(340,18*19,)这两个数都在P中,因为,若M=340,B立刻可以知道这两个数为20,和17,
其实要一一排除的,也就是说S=4到38.
最后我认为S=4符合,别的还没有全部验证,其实可以编程实现来验证的。
这两个数分别为2,2
4
a) A知道S=4,存在1+3,2+2两种情况,所以A不知道,但A可以推算M可能为3,4,根据这两个数,A是不能肯定B是否知道答案的。
b) B知道M=4,存在1*4, 2*2 ,B能推断S可能为5,4,因为S为其中任意一个,A是肯定推算不出来的,也就是说,若B知道M=4,就算是A自己不说“不知道”,B也可以肯定A是不知道的。所以A说的那句话对B用处不大。
c) 因为A推算出B可能为3,和4,但B却说“不知道”,A这时就知道,M肯定不是3,如果是的话,B就会知道结果的,所以A知道M=4,又根据S=4所以A知道这两个数为2,2.
d) B这时为什么也知道呢?因为B推算出S可能为5,4,如果S=5的话,B会站在A的立场上去思考,也就是说假如A知道S=5时会怎么想,他会这么想 的:1+4=5,2+3=5, 即可以推算出M=4,6,此时,A肯定能够得出B不知道答案,也就说B说的那句话“不知道”没有价值,A也就推算不出这两个数。所以S!=5,那么S=4 了,所以B此时也知道了。