不知道;不知道;我知道了;那我也…
2014-09-25 13:31
155 查看
本文转自:/article/6001798.html
已知两个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
已知两个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
相关文章推荐
- Android进阶——你所知道的Camera2和你所不知道的Camera2完全解析
- 那些你知道的和你不知道的win7快捷键(三)
- 学电脑,就得知道电脑每个键的用处,不知道请看
- 类似于广州3D地图 不知道人家的3D的地图是用什么软件做的,有没有人知道!
- 1-20的两个数把和告诉A,积告诉B,A说不知道是多少,B也说不知道,这时A说我知道了,B说我也知道了,请你猜猜这两个数的和是多少
- 那些你知道的和不知道的搜索引擎,互联网营销
- 有哪些老鸟程序员知道而新手不知道的小技巧?
- 哪些事情是普通人并不知道的,只有程序员和计算机科学家知道?
- 哪些事情是普通人并不知道的,只有程序员和计算机科学家知道?
- 每个程序员都应该知道的福利!!-很多都不知道啊
- 嗨,睡觉吧,如果让猪猪知道了还不知道怎么生气呢,反正就是睡不着。
- 你知道江小白,却不知道它为什么能火?
- 看过了不知道做过了才知道
- 我知道你不知道的负Margin
- 今天无意中发现JavaBean类基本都要求实现了Serializable接口,以前只是知道序列化以后,可以通过io流的方式将对象序列化和反序列化,进行存取,但不知道为什么需要序列化,今天总结一下
- [置顶] 【相机】(1)——Intent调相机的2种方式以及那些你知道的和不知道的坑
- 你知道的Java,和你不知道的Java
- Java程序员的堕落 ——只知道框架 不知道原理
- 不知道去哪里学习,来看这个你就知道了!
- 你知道的越多,你会发现你不知道的也就越多