已知两个1~30之间的数字,甲知道两数之和,乙知道两数之积。
甲问乙:"你知道是哪两个数吗?"乙说:"不知道";
乙问甲:"你知道是哪两个数吗?"甲说:"也不知道";
于是,乙说:"那我知道了";
随后甲也说:"那我也知道了";
请问这两个数是什么?
解:
设这两个数为x,y. 甲知道两数之和 A=x+y; 乙知道两数之积 B=x*y;
该题分两种情况
l 允许重复, 有(1 <= x <= y <= 30);
l 不允许重复,有(1 <= x < y <= 30);
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
当不允许重复, 即(1 <= x < y <= 30);
A∈[3,59]; B∈[2,870];
1)首先甲问乙,乙Say NO
=> B=x*y 解不唯一
=> B=x*y 为合数(除了1和它本身两个约数外,还有其它约数的数,叫合数)
又∵ x ≠ y
∴ B ≠ k*k (其中k∈N) ,B为非平方数
于是得到结论(推论1):
B=x*y 是合数且 B 非平方数
即:B ∈{6,8,10,12,14,15,18,20...}
注意,这个推论,我这个局外人和甲都能推导出来。就是说此时,我和甲都知道两数之积的大概范围。
2)然后乙问甲,甲Say NO
=> A=x+y 解不唯一
=> A ∈[5,57];
上面已经提到,甲已经知道推论1。而且甲也知道两数之和,但是他依旧Say NO,这是怎么回事?我们来揣测一下。由于我们不知道两数之和是多少,所以先从假设开始。
假设 A=x+y=5
则有双解
x1=1,y1=4;
x2=2,y2=3;
代入公式B=x*y:
B1=x1*y1=1*4=4; (不满足推论1,舍去)
B2=x2*y2=2*3=6;
得到唯一解x=2,y=3 即甲知道答案,这与甲Say NO相矛盾
故假设不成立, A=x+y≠5
假设 A=x+y=6
则有双解
x1=1,y1=5;
x2=2,y2=4;
代入公式B=x*y:
B1=x1*y1=1*5=5; (不满足推论1,舍去)
B2=x2*y2=2*4=8;
得到唯一解x=2,y=4即甲知道答案,这与甲Say NO相矛盾
故假设不成立, A=x+y≠6
当A∈[7,57]时
至少存在两组解满足推论1,即
A为奇数时,
x1=(A-1)/2,y1=(A+1)/2;
x2=(A-3)/2,y2=(A+3)/2;
代入公式B=x*y:
B1=x1*y1=(A-1)/2 * (A+1)/2 (满足推论1)
B2=x2*y2=(A-3)/2 * (A+3)/2 (满足推论1)
A为偶数时,
x1=(A-2)/2,y1=(A+2)/2;
x2=(A-4)/2,y2=(A+4)/2;
代入公式B=x*y:
B1=x1*y1=(A-2)/2 * (A+2)/2 (满足推论1)
B2=x2*y2=(A-4)/2 * (A+4)/2 (满足推论1)
存在多解的情况,让甲无法判断,所以Say NO。
于是得到结论(推论2):
A∈[7,57]
注意,这个推论,我这个局外人和乙都能推导出来。
3)然后乙Say YES
=> 乙根据已经知道的两数之积B=x*y及推论2可以得出唯一解,即
A=x+y, A∈[7,57]
B=x*y, B∈{6,8,10,12,14,15,16,18,20...}
1 <= x < y <= 30
x,y存在唯一解
乙是怎么办到的?我们来揣测一下。由于我们不知道两数之积是多少,所以先从假设开始。
假设B=6 时:有两组解
x1=1, y1=6
x2=2, y2=3 (不满足推论2,舍去)
得到唯一解 x=1, y=6,可以Say YES
假设B=8 时:有两组解
x1=1, y1=8
x2=2, y2=4 (不满足推论2,舍去)
得到唯一解 x=1, y=8,可以Say YES
当 B>8 时:容易证明均为多重解
于是得到结论(推论3):
x=1, y=6 或者 x=1, y=8
注意,这个推论,我这个局外人和甲都能推导出来。
这里有个疑问,推论3不是两个答案吗,乙怎么能Say YES呢?设身处地为乙想想吧,乙是知道两数之积B是多少的。说的再明白些,如果乙知道的两数之积是6,那么他当然可以判定x=1,y=6了。同理,如果乙知道的两数之积是8,那么他当然可以判定x=1,y=8了。此时,我和甲不知道两数之积,所以只能得到推论3.
4)最后甲Say YES
=> 甲根据已经知道的两数之和A=x+y及推论3可以得出唯一解
说的再明白些,如果乙知道的两数之和是7,那么他可以判定x=1,y=6了。如果甲知道的两数之和是9,那么他可以判定x=1,y=8了。
综上所述,原题所求有两组解:
x1=1, y1=6
x2=1, y2=8
不信的话,你可以从头开始验证两组解,你会发现甲和乙的回答,是那么“顺其自然”。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
当x<=y时,有(1 <= x <= y <= 30);
同理可得唯一解 x=1, y=4
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
允许两数重复的情况下
答案为x=1, y=4; 甲知道和A=x+y=5, 乙知道积B=x*y=4
不允许两数重复的情况下有两种答案
答案1: 为x=1, y=6; 甲知道和A=x+y=7, 乙知道积B=x*y=6
答案2: 为x=1, y=8; 甲知道和A=x+y=9, 乙知道积B=x*y=8
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
换汤不换药
把上面的题目改下,改成乙先问甲,甲Say NO,然后甲问乙,乙Say NO,然后甲Say YES,最后乙Say YES。请问这两个数是什么?
解题思路类似,答案是:
允许两数重复的情况下
答案为x=2, y=2; 甲知道和A=x+y=2, 乙知道积B=x*y=4
不允许两数重复的情况下有两种答案
答案1: 为x=2, y=3; 甲知道和A=x+y=5, 乙知道积B=x*y=6
答案2: 为x=2, y=4; 甲知道和A=x+y=6, 乙知道积B=x*y=8