IBM的面试题(巨牛题)

数字1-30
甲知道其中两数之积
乙知道其中两数之和
甲问乙:你知道这两个数是什么么?
乙答:不知道
乙问甲:你知道这两个数是什么么?
甲答:不知道

甲又问:你知道这两个数是什么么?
乙答:知道了
乙问甲:你知道了么?
甲答:我也知道了

问:这两个数是什么?



THERMO能做出来我就超级无比PF

挑战逻辑极限。。。。。。

2x3=6 1x6=6 A 当然不知道那个是咯
2+3=5 1+4=5 B也是不知道那个的
可是 甲问乙:你知道这两个数是什么么? 乙答:不知道. 可是当乙问甲:你知道这两个数是什么么?甲答:不知道 那么那时乙应该是知道答案的. 因为乙知道的和是5那么只有1+4 / 2+3 才可以得到5的. 那么要是1和4的话那么甲应该知道答案的. 可是甲说他不知道. 那乙很自然的就知到那俩个数是2,3. 而甲听到乙说他知道了. 也就想到咯.
如果楼主说1-30的数中可以重复的话. 以上的就当我没说过好了@@!

不好意思
没这么简单

本来不想说了. 不过我想大家看了.可能有疑问. 那时我又不在就不好了. 大家也许会问. 如果甲知道的是6. 为什么乙的和是5而不是7呢???
如果是7那么会有1+6 2+5 3+4 , 3 个俩个数.  乙问甲:你知道这两个数是什么么??? 答不知道 . 如果是1x6=6=2x3 . 就有俩个可能了. 如果是2x5=10=1x10 .. 3x4=12=1x12/2x6. 每个数都是甲不知道的. 那 乙 也不可能知道答案的.

阁下的
思路不对
可以一步步缩小范围的
起步就这样套是不行的

看得都晕````

为什么不对呢??///这样跟你上面的题目合理呀. 还是着个问题. 如果数字是可以重复的. 那你就当我没说过好了..

再想想吧

我明天公布答案算了

这个我想这里没有这么强的人了

SQL> WITH t1 AS
2 (SELECT a.x,
3 b.y,
4 a.x * b.y p,
5 a.x + b.y s,
6 COUNT (*) OVER (PARTITION BY a.x * b.y) pcnt,
7 COUNT (*) OVER (PARTITION BY a.x + b.y) scnt
8 FROM (SELECT ROWNUM + 1 x
9 FROM user_objects
10 WHERE ROWNUM < 99) a,
11 (SELECT ROWNUM + 1 y
12 FROM user_objects
13 WHERE ROWNUM < 99) b
14 WHERE a.x < b.y)
15 SELECT x,
16 y
17 FROM (SELECT x,
18 y,
19 x + y s,
20 COUNT (*) OVER (PARTITION BY x + y) scnt
21 FROM (SELECT x,
22 y,
23 x * y p,
24 COUNT (*) OVER (PARTITION BY x * y) pcnt
25 FROM (SELECT x,
26 y,
27 x * y p,
28 x + y s,
29 COUNT (*) OVER (PARTITION BY x * y) pcnt,
30 COUNT (*) OVER (PARTITION BY x + y) scnt
31 FROM t1 o
32 WHERE scnt > 1
33 AND NOT EXISTS (SELECT NULL
34 FROM t1 i
35 WHERE i.pcnt = 1
36 AND i.s = o.s))
37 WHERE pcnt = 1))
38 WHERE scnt = 1;

X Y
---------- ----------
4 13

SQL>

首先,甲不知道这两个数字是多少,说明这两个数字不可能都是质数,否则将这两个数字的积(设为A)分解质因数既可还原。
既然乙也不知道这两个数字是多少,说明这两个数的和(设为B)不可能分解为两个质数的和。因为任何大于4的偶数都可以分解为两个质数之和(哥德巴赫猜想),所以,这B必为奇数,也就是说这两个数是一奇一偶。 同样B不可能等于“质数+2” 另:B不可能大于54。因为任何大于54的数都可以拆分成53+X的形式,而53和任意自然数的积一定有质因数53,与上述分析矛盾。 这样两数之和B的范围大大缩小。 那么这两个数的和B只可能等于:
11 17 23 27 29 35 37 41 47 中的一个。

其次甲听了这话,想了想,说知道这两个数字是多少了
看看各种可能的B的各种拆分方式所得到的积:
11(2*9=18、3*8=24、4*7=28、5*6=30)
17(2*15=30、3*14=42、4*13=52、5*12=60、6*11=66、7*10=70、8*9=72)
23(2*21=42、……)
……
47(……)
可以看出,30、42等作为积出现了不止一次,所以两数之积A不可能是30、42等。
我们把这样的数从上表中划去,剩下的数就是可能的积.但由于工作量太大,我们先不去管他.先向下分析.
乙听了甲的话,也说我也知道是多少了
这句话说明,最终的B值只包含一种可能拆分。
11可拆分为4+7和8+3,均为可能拆分。
23可拆分为4+19和16+7,均为可能拆分。
27可拆分为4+23和8+19。
35可拆分为4+31,16+19和32+3。
37可拆分为8+29和32+5。
47可拆分为4+43和16+31。
另:
29可拆分为6+23和16+13均为可能拆分
41可拆分为4+37和10+31,均为可能拆分。
好了,现在只剩下17。
拆拆看:
17(2*15=30、3*14=42、4*13=52、5*12=60、6*11=66、7*10=70、8*9=72)
不难验证,其中30、42、60、66、70、72均不是可能的A值,只有4*13一种拆分方法。
所以答案:
4和13!

腹股沟
你这人怎么这样..我问你能不能重复的数有2 次了. 你就是不说..说了我就回自己想答案啊. 现在好都自个把答案给翻出来.一点也不好玩

啊欧
不好意思

斑斑常常催促公布答案

寒....根本看不懂...

晕了。。
数学逻辑还没强到这个地步

贼牛~~~~~~~`
不懂~




欢迎光临 空网论坛 (http://bbs.kongweb.net/) 作者: waiting    时间: 2005-7-31 12:37