教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数。 甲
创始人
2025-06-22 01:40:56
0次
教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数。 甲
答案不应该是1和4吗
2和6 4和6 3和8
3和4(可严格证明)
设两个数为n1,n2,n1>=n2,甲听到的数为n=n1+n2,乙听到的数为m=n1*n2
证明n1=3,n2=4是唯一解
证明:要证以上命题为真,不妨先证n=7
1)必要性:
i) n>5 是显然的,因为n<4不可能,n=4或者n=5甲都不可能回答不知道
ii) n>6 因为如果n=6的话,那么甲虽然不知道(不确定2+4还是3+3)但是无论是2,4还是3,3乙都不可能说不知道(m=8或者m=9的话乙说不知道是没有道理的)
iii) n<8 因为如果n>=8的话,就可衫闹汪以将n分解成 n=4+x 和 n=6+(x-2),那么m可以是4x也可以是6(x-2)而4x=6(x-2)的必要条件是x=6即n=10,那样n又可以分解成8+2,所以总之当n>=8时,n至少可以分解成两种不同的合数之和,这样乙说不知道的时候,甲就没有理由马上说知道。
以上证明了必要性
2)充分性
当n=7时,n可以分解成2+5或或仔3+4
显然2+5不符合题意,舍去,容易判断出3+4符合题意,m=12,证毕
于是得到n=7 m=12 n1=3 n2=4是唯一解弯橘。
/**
* 原题:一个老师从2到9中取两个数字备世,给甲说了积,给乙说了和, 甲说我不知道,乙说我也不知道,甲说你不知道那我就知道了, 乙说你知道了那我也知道了
* 这两山仿个数分别是多少?
* 解题思想:甲说我不知道,意思是积是不止一个组合得出的值,比如18(2*9 和 3*6都可以得到),乙说我也不知道,就是说和也是不止一个组合得出的值
* 然后甲乙都知道了,这两个数得出的积跟和的都不是一个组合得出的值
* 编程思想:将2-9的积放在一个列表里,和放在一个列表里,从2开始遍历到9,把积数跟和数放入列表,如果列表中已经存在积数跟和数,打印出这两个数字
*/
static void getTwoNumber(int start, int end) {
if (end - 2 > start) {
ArrayList ji = new ArrayList();
ArrayList he = new ArrayList();
int a, b;
for (int i = start; i < end; i++) {
for (int j = i + 1; j <= end; j++) {
a = i * j;
b = i + j;
if (ji.indexOf(a) >= 0 && he.indexOf(b) >= 0) {
System_out.print("数1是:" + i);
System_out.print(",数2是:" + j);
System_out.print(",积是:" + a);
System_out.print(",和是:" + b);
System_out.println();
} else {
ji.add(a);
he.add(b);
}
}
}
}
}
运行结果:
数1是:3,数2是:4,积是逗滚纤:12,和是:7
数1是:3,数2是:6,积是:18,和是:9
数1是:4,数2是:6,积是:24,和是:10
根据积的值可以猜出列表里面已存在的另三组是:2和6、2和9、3和8
一共是上述6组答案
相关内容