已知两个数字为1~30之间的数字:<br /> X<=30 && X>=1 && Y<=30 && Y>=1<br />-------------------------------------------------------<br />甲知道两数之和:<br />Z = X+Y, 2<=Z<=59<br />-------------------------------------------------------<br />乙知道两数之积:<br />W = X*Y, 1<=W<=900<br />-------------------------------------------------------<br />甲问乙:“你知道是哪两个数吗?”乙说:“不知道”:<br />如果给出2到59之间的一个数,可以唯一确定他的加数,则将这个数从Z取值范围中去掉.<br />如:2 = X + Y 则一定是X=Y=1 因此可以将2从Z取值范围中去掉。<br /> 5 = 1+4,5 = 2+3,因此5不能唯一确定加数,因此5仍留在Z取值范围中。<br />依此类推,可以得到Z的取值范围。<br />-------------------------------------------------------<br />乙问甲:“你知道是哪两个数吗?”甲说:“也不知道”:<br />如果给出1到900之间的一个数,可以唯一确定他的乘数,则将这个数从W取值范围中去掉.<br />如:1 = X * Y 则一定是X=Y=1 因此可以将1从W取值范围中去掉。<br /> 24 = 6+4,24 = 3+8,因此24不能唯一确定加数,因此24仍留在W取值范围中。<br />依此类推,可以得到W的取值范围。<br />-------------------------------------------------------<br />于是,乙说:“那我知道了”,随后甲也说:“那我也知道了”:<br />之前已经得到的Z,W的取值范围,可以在整个Z,W的取值范围内找满足:<br />(Z == X+Y) && (W == X*Y) && (X<=30) && (X>=1) && (Y<=30) && (Y>=1)<br />条件的数。<br /><br />答案不一定唯一。<br /><br />那位牛淫coding以下。<br />
|