1到30这些数字中,有两个数字
1到30这些数字中,有两个数字
甲知道两数之和,乙知道两数之积
甲问乙两数之积是多少,乙不说话,甲说我知道了
乙问甲两数之和是多少,甲不说话,乙说我知道了
这两个数是多少?
你别钻牛角尖好不,有意思没
说的就是1、2、3、4....11、12、13....21、22、23这些么
不想回答算了
两个在1-30之间的数字,甲知道两数之和,乙知道两数之积,
1.乙问甲知道是哪两个数字吗,甲答不知道;
2.甲问乙知道是哪两个数字吗,乙也说不知道;
3.接着甲说我知道了;
4.乙也说他明白了.
此题不很严密,没说两数可不可以相等.但都可以做
思路一:
两数可以相等.答案2和2,推导过程如下:
1.乙问甲:你知道这两个数是什么么?甲答:不知道
-〉则和数>3
2.甲问乙:你知道这两个数是什么么?乙答:不知道
-〉则积数不是素数,和数不是1+素数
3.乙又问:你知道这两个数是什么么?甲答:知道了
-〉则甲的和数分解只有两个解,并且其中一个解是1+素数
-〉因此甲可以通过第二问排除掉将和数分解成1+素数分解的办法,直接取得另一种和分解办法;
-〉同时我们注意到和分解只有两个解的和数满足 和数3,因此和数只有4,5;
-〉4的两种分解1,3和2,2存在1和素数的情况因此和数为4,两数为2和2可能(这里说可能是因为还不确定最后一问的情形是否符合)是其中一种答案
-〉5的和分解是1,4和2,3不存在1和素数的和分解,因此和数5必然不是甲所持有的和数
4.甲问乙:你知道了么?乙答:我也知道了
-〉因为乙也和我们推理的一样聪明,因此他通过前三问知道甲持有的和数是4,因此乙的手里拿到的积数只能是1*3 = 3或2*2 = 4,1*3很容易被排除,因此乙持有的积数是4,
->乙通过手里的积数4推测可能是1,4两个数,或2,2两个数;
-〉显然1,4两个数不符合要求,因为这意味这甲持有的和数是1+4=5,乙同样可以推理出5在第三问必然被排除;
-〉2,2两个数意味这甲持有的和数是2+2=4,乙可以推倒出这正是甲在第三问就能得出答案的两个数,因此乙很肯定的知道这两个数就是2和2;
思路二:
假设两数和为n ,两数积为k
//由于开始甲乙都无法判断两数,所以n和k都不会是极大或极小的值
所以 59>n>3 k>3(上限判断比较复杂)
//注意第三句,甲接受到k为非素数的条件后立即做出了判断!
//甲势必对手上的和数如下分
1*(n-1) //要使判断成立,必须n-1=素数
2*(n-2) //在1和2中做出2唯一的判断
3*(n-3) //出现第三种情况将无法做出唯一判断 所以n-3