魔方吧·中文魔方俱乐部

标题: 已知两个数的和与积,五步分析,难度较大 [打印本页]

作者: 钟七珍    时间: 2012-2-25 00:20:59     标题: 已知两个数的和与积,五步分析,难度较大

      已知两个数的和与积,五步分析,难度较大:
  甲和乙两人都是数字逻辑分析高手,主持人猜这两个人猜两个数。先同时告知甲乙双方:这两个数是在2到90之间(包含2与90)的整数。而且这两个数的和大于11、两数的积小于260。再单独告诉甲这两个数的和,单独告诉乙这两个数的积。由甲乙轮流发言,请甲先说。
  第一步,甲:我不知道这两个数,但我知道乙也不知道这两个数。
  第二步,乙:一开始我不知道两个数,但知道甲也不知道这两个数:现在我仍然不知道是哪两个数。(乙还有一句话:“我现在无法判断甲现在是否知道是哪两个数。甲可能知道,也可能不知道”没有说出来。)
  第三步,甲:我仍然不知道是哪两个数。
  第四步,乙:哈哈!我知道是哪两个数了!
  第五步,甲:哈哈,我也知道这两个数了!

  请问:这是哪两个数?
作者: 钟七珍    时间: 2012-2-25 00:23:08

  补充说明:两个数的和大于11,即不包含11;两数的积小于260,即不包括260。
作者: Cm_Hu    时间: 2012-2-25 00:29:14

前天才在果壳上看到这个
作者: sonicgod    时间: 2012-2-25 01:52:13     标题: 回复 1# 的帖子

這兩個數可以有很多可能啊!包括 : 2和9 至 13和20都得啊!
作者: nnkken    时间: 2012-2-25 10:23:46

分析到第二步已經開始吐血了……
作者: nnkken    时间: 2012-2-25 22:15:08

是7和22吧……搞得頭都昏了

[ 本帖最后由 nnkken 于 2012-2-25 22:53 编辑 ]
作者: 钟七珍    时间: 2012-2-26 00:41:38

原帖由 sonicgod 于 2012-2-25 01:52 发表
這兩個數可以有很多可能啊!包括 : 2和9 至 13和20都得啊!

  如果这两个数是2和9,它们的积就是18,那么乙第二步就能猜出来(因为第一步甲说完之后,若乙手中的积是18,那么它只能分解成2乘以9)。
  如果这两个数是13和20,那么它们的和就是33。而33可能是2与31的和,那么第一步甲就不敢肯定“我知道乙也不知道这两个数”。(因为62只能分解成2与31的积,乙就可能知道。所以甲不能只凭自己手中的和是33而断定乙不知道是哪两个数)。
  所以,这两组答案都是错误的。
  答案也不是很多。只有唯一解。
作者: 钟七珍    时间: 2012-2-26 00:47:48

原帖由 nnkken 于 2012-2-25 22:15 发表
是7和22吧……搞得頭都昏了

  7和22也不对。若是这两个数,第二步乙就能判断出来。乙根据甲第一步的发言,再看手中的积154,只能分解成7乘22。
作者: 钟七珍    时间: 2012-2-26 01:04:02

原帖由 Cm_Hu 于 2012-2-25 00:29 发表
前天才在果壳上看到这个

  此题目是我对另一题的改编并增加难度,可以认为是我的原创。
作者: rubik-fan    时间: 2012-2-26 01:12:16

楼主能否给个两步分析的简单例题让我先入门一下。一下子就搞五步的我接受不了。
作者: 钟七珍    时间: 2012-2-26 01:18:51

原帖由 rubik-fan 于 2012-2-26 01:12 发表
楼主能否给个两步分析的简单例题让我先入门一下。一下子就搞五步的我接受不了。

  我在本版块发过一篇4步分析的帖子。那是我转帖的。里面的讨论,可供参考:http://bbs.mf8-china.com/viewthread.php?tid=87011&extra=page%3D3
作者: nnkken    时间: 2012-2-26 11:03:41

原帖由 鐘七珍 於 2012-2-26 00:47 發表

  7和22也不對。若是這兩個數,第二步乙就能判斷出來。乙根據甲第一步的發言,再看手中的積154,只能分解成7乘22。

154的話,也可以是77乘2呢?
甲第一步的發言,基本上是否定了兩數均為質數的可能性。
也就是說兩數之和非偶數,而且也不是質數加2。
但77乘2也符合條件吧?

我再算了一輪,發現除了7和22外,還有6和29,不知對不對?
作者: nnkken    时间: 2012-2-26 12:19:54

首先,x+y>11,xy<260。
當x+y為固定值時,x、y相差越大,乘積越小。若x+y的值大於92,則乘積的最小值會是90*(x+y-90)>=270。
因此可推知,x+y的最大值為92。
另外,根據這樣的條件,無論甲所得的和為何,甲都不可能一開始就知道x和y的值。

第一步,甲:我不知道這兩個數,但我知道乙也不知道這兩個數。
分析:
若甲所得的和,可寫成兩個質數之和,則由於質數乘積只有四個因數(1、a、b、ab),而1與ab必定不是該兩個數,因此在這種情況下,乙一定可以得知原本的兩個數。
所以甲所得的和,一定不能寫成兩個質數的和。
我們知道,根據哥德巴赫猜想,任何偶數均可寫成兩個質數之和。雖然哥德巴赫猜想尚未被證實,不過對於x、y均為2與90之間的數字的情況,它顯然是對的。
因此甲所得的和一定不是偶數,我們只須檢查奇數。
因為奇數=偶數+奇數,所以若這個奇數是兩個質數之和,那其中一個質數一定是偶數,那只可能是2。
也就是說,我們只須檢查該奇數減2是不是質數,是的話則篩走。
符合條件的和為:17、23、27、29、35、37、41、47、51、53、57、59、65、67、71、77、79、83、87、89
以上稱為列表1。

第二步,乙:一開始我不知道兩個數,但知道甲也不知道這兩個數:現在我仍然不知道是哪兩個數。(乙還有一句話:「我現在無法判斷甲現在是否知道是哪兩個數。甲可能知道,也可能不知道」沒有說出來。)
分析:
在符合我們第一部分析的條件的情況下,乙一開始一定不知道那兩個數。而甲一開始一定不知道那兩個數。因此這兩句略過。
乙在分析出兩數知和的可能性後,仍不知道x和y。
這表示,把列表1的和的所有乘積可能列出來後,乙發現他自己手中的積在列表中出現了兩次以上,因此不能判斷哪個組合。
例:17可以是2+15、3+14、4+13、……、8+9,而它們的乘積則分別是30、42、52、……、72。這些就是17的乘積可能。
當然,大於260的乘積不算在內。
把17、23、27、29、……、89這些序列1的元素的乘積可能都列出來,得到以下列表:
17 -- 30, 42, 52, 60, 66, 70, 72
23 -- 42, 60, 76, 90, 102, 112, 120, 126, 130, 132
27 -- 50, 72, 92, 110, 126, 140, 152, 162, 170, 176, 180, 182
29 -- 54, 78, 100, 120, 138, 154, 168, 180, 190, 198, 204, 208, 210
35 -- 66, 96, 124, 150, 174, 196, 216, 234, 250
37 -- 70, 102, 132, 160, 186, 210, 232, 252
41 -- 78, 114, 148, 180, 210, 238
47 -- 90, 132, 172, 210, 246
51 -- 98, 144, 188, 230
53 -- 102, 150, 196, 240
57 -- 110, 162, 212
59 -- 114, 168, 220
65 -- 126, 186, 244
67 -- 130, 192, 252
71 -- 138, 204
77 -- 150, 222
79 -- 154, 228
83 -- 162, 240
87 -- 170, 252
89 -- 174, 258
以上稱為列表2。
而乙看到列表2後,發現自己手中的積,在列表2中出現了至少2次,因此仍未能確定哪個才是正確的和。
也就是說,乙手中的乘積,不可能是列表2中只出現過一次的乘積。把這些乘積篩走,得到以下的乘積可能:
42(2)
60(2)
66(2)
70(2)
72(2)
78(2)
90(2)
102(3)
110(2)
114(2)
120(2)
126(3)
130(2)
132(3)
138(2)
150(3)
154(2)
162(3)
168(2)
170(2)
174(2)
180(3)
186(2)
196(2)
204(2)
210(4)
240(2)
252(3)
以上稱為列表3。其中,括號內的數字代表出現次數。
列表2作出修正,只留下列表3列出的乘積可能:
17 -- 42, 60, 66, 70, 72
23 -- 42, 60, 90, 102, 120, 126, 130, 132
27 -- 72, 110, 126, 162, 170, 180
29 -- 78, 120, 138, 154, 168, 180, 204, 210
35 -- 66, 150, 174, 196
37 -- 70, 102, 132, 186, 210, 252
41 -- 78, 114, 180, 210
47 -- 90, 132, 210
53 -- 102, 150, 196, 240
57 -- 110, 162
59 -- 114, 168
65 -- 126, 186
67 -- 130, 252
71 -- 138, 204
77 -- 150
79 -- 154
83 -- 162, 240
87 -- 170, 252
89 -- 174
以上稱為列表4。
列表4是甲聽完乙第二步的發言後,所得到的列表。
然而,乙在第二步中沒有說出來的是:「我現在無法判斷甲現在是否知道是哪兩個數。甲可能知道,也可能不知道」
這個「現在」,是指「甲聽完乙第二步的發言後」,不然就沒有意義了。
乙指出甲是有可能知道那兩個數的。也就是說,他手中的乘積,在(甲「現在」所能看到的)列表4某些和裡,只出現了一次。
舉個例說,若乙手中的乘積是42,那甲的和就只能是17或者23。而不論是17還是23,甲在看完列表4後,都不可能知道那兩個數,因為還存在其他可能性。
但若乙手中的乘積是154,那甲的和就只能是29或者79。而若是79的話,甲則在看完列表4後,便可以知道那兩個數了。
因此,乙手中的乘積只可能是150、154、174。注意:這一點,甲暫時是不知道的,因為乙那句話沒說出來。
因此,對於乙來說,他所看到的其實是以下的列表:
150 -- 35、53、77
154 -- 29、79
174 -- 35、89
以上稱為列表5。

第三步,甲:我仍然不知道是哪兩個數。
分析:
這證實了甲手中的和,不是77、79、89。因為若是這3個數的其中之一,那甲在看到列表4時,便可以馬上知道那兩個數。
因此,甲手中的和只可能是29、35、53。這是乙在聽完甲在第三步的發言後,所得出的結論。

第四步,乙:哈哈!我知道是哪兩個數了!
分析:
乙在得知「甲手中的和只可能是29、35、53」後,再對照他所能看到的列表5,馬上知道了那兩個數。在篩走77、79、89三個和之後,列表5變成這樣:
150 -- 35、53
154 -- 29
174 -- 35
以上稱為列表6。
而乙在看完列表6後便知道了那兩個數,表示他手中的乘積不可能是150,因此只可能是154或174。
154 -- 29
174 -- 35
以上稱為列表7。
另外,由於乙在得知「甲在第三步仍不知是哪兩個數」後,馬上便從中得到了訊息,知道了那兩個數。
若乙在第二步就知道甲仍不知道那兩個數,那他是不可能得出這個結論的,因為這樣的話,乙根本沒有獲取過新的訊息。
因此,甲在聽完乙在第四步的發言後,便會馬上知悉乙在第二步中沒有說出來的發言:「我現在(在第二步發言後)無法判斷甲現在是否知道是哪兩個數。甲可能知道,也可能不知道」。

第五步,甲:哈哈,我也知道這兩個數了!
分析:
在從乙第四步的發言,分析出上面這些後,甲在第五步所得的訊息量,與我們(得悉一切的解題者)一樣。因此,他也馬上得出了列表7。
而他一看列表7,便能馬上知道是那兩個數。

所以可能的答案為:
和29、積154,兩個數為7和22;
和35、積174,兩個數為6和29。
作者: nnkken    时间: 2012-2-26 14:01:54

……呃,我大概知道錯在甚麼地方了……
基本上第一步就全錯了……
作者: 钟七珍    时间: 2012-2-26 14:19:06

原帖由 nnkken 于 2012-2-26 14:01 发表
……呃,我大概知道錯在甚麼地方了……
基本上第一步就全錯了……

  第一步并未全错,,错了约一半左右。
“所以可能的答案為:
和29、積154,兩個數為7和22;
和35、積174,兩個數為6和29。”
  ——这两个答案均不对。
作者: nnkken    时间: 2012-2-26 19:30:08

不行了……
重新再算一次,結果沒有成功否定7和22、6和29兩組解,反而還多出個43和4這一組。
還是等其他人解答算了
作者: 钟七珍    时间: 2012-2-26 23:37:59

原帖由 nnkken 于 2012-2-26 11:03 发表

154的話,也可以是77乘2呢?
甲第一步的發言,基本上是否定了兩數均為質數的可能性。
也就是說兩數之和非偶數,而且也不是質數加2。
但77乘2也符合條件吧?

我再算了一輪,發現除了7和22外,還有6和29,不知對不對?

  若是7和22,那么甲被告知的和是29,乙被告知的积是154。和是29,所以甲敢断定乙不知道是哪两个数;乙根据甲的发言,再看手中的积是154,而154可以拆成:7乘22,或2乘77,或14乘11。这三组数的和分别为:29、79、25。若这两数的和是79(79可以等于32加49,或26加53,或20加59,或18加61,或12加67,或8加71,或6加73之和!)或25(25可以等于2加23之和),甲第一步是不敢说“我知道乙也不知道这两个数”的!所以只能和是29!所以说,根据甲的发言、手中的积是154,第二步乙就能判断这两个数是7与22!
  同理,若是6与29,那么甲知道和是35,乙知道积是174。和为35,所以甲说“我知道乙不知道是哪两个数”。乙看手中的是174,而174可以拆成:6乘29,或2乘87,或3乘58。这三组数的和分别为:35、89、61。而若是后面的两个和(89可以等于42加47,或36加53,……或6加83之和;61可以等于14加47,或8加53或2加59之和),甲是没有胆量断定乙不知道这两个数的!所以根据甲的发言、手中的积是174,乙在第二步就能判断出这两个数是6与29!
  所以,7与22,或6与29,均不是正确答案。
作者: 钟七珍    时间: 2012-2-26 23:40:33

原帖由 nnkken 于 2012-2-26 19:30 发表
不行了……
重新再算一次,結果沒有成功否定7和22、6和29兩組解,反而還多出個43和4這一組。
還是等其他人解答算了

  43与4,也是错误解。若是此两数,第二步乙也能答出来。分析过程同楼上。
作者: sonicgod    时间: 2012-2-27 01:38:17     标题: 回复 18# 的帖子

這是甚麼數學啊?我真的很難相信在魔方吧看到這種莫名其妙的題目!當我看到有人詳細地解答更嚇一跳!好像數學家在交談著高深莫測的題目!何時才開估?
作者: 钟七珍    时间: 2012-2-27 09:14:28

原帖由 sonicgod 于 2012-2-27 01:38 发表
這是甚麼數學啊?我真的很難相信在魔方吧看到這種莫名其妙的題目!當我看到有人詳細地解答更嚇一跳!好像數學家在交談著高深莫測的題目!何時才開估?

这个板块是《数学、算术趣题》,此题没有发错地方。此题用到的计算只是加减乘除,并不高深,只是要用到一点逻辑判断而已。“莫名其妙”?可能确实有点难!
作者: puzzletwister    时间: 2012-2-27 10:18:08

原帖由 钟七珍 于 2012-2-26 23:37 发表

  若是7和22,那么甲被告知的和是29,乙被告知的积是154。和是29,所以甲敢断定乙不知道是哪两个数;乙根据甲的发言,再看手中的积是154,而154可以拆成:7乘22,或2乘77,或14乘11。这三组数的和分别为:29、7 ...

加入和是79,只有分解成2和77,3和76才能保证积小于260,不过这两组积都是不能直接判断出两个数,所以和是79是可以说出第一句话的,89也一样。

nnkken第一步排除的和中少排除了57,因为如果对方的积是4*53还是可以立即判断出两个数的,所以和不能是57,不过似乎对最后结果没有影响
作者: nnkken    时间: 2012-2-27 11:53:21

原帖由 鐘七珍 於 2012-2-26 23:37 發表

  若是7和22,那麼甲被告知的和是29,乙被告知的積是154。和是29,所以甲敢斷定乙不知道是哪兩個數;乙根據甲的發言,再看手中的積是154,而154可以拆成:7乘22,或2乘77,或14乘11。這三組數的和分別為:29、7 ...

和是79的話,只有兩種可能性:77+2(積為154)、76+3(積為228),其他可能性均不符合「積小於260」的條件。
所以如果甲手中的和是79的話,他要考慮的是,乙手中的這個積的可能性(154、228)中,是否有任意一個足以讓乙推導出那兩個數。
然而,154=2*77=7*22=11*14
228=3*76=4*57=6*38=12*19
所以,無論乙手中的積是154還是228,乙都不會一開始就知道那兩個數。
所以,如果甲手中的和是79的話,他可以說出「我不知道這兩個數,但我知道乙也不知道這兩個數。」
反過來說,若是7和22,甲手中的和是29而乙手中的積是154的話,由於有和是79的可能性存在,因此乙在第二步不能斷定那兩個數是7和22。

同理,若和是89,則只可能是87+2(積為174)或86+3(積為258)。
174=2*89=3*58=6*29
258=3*86=6*43
甲同樣能斷定乙一開始不知道那兩個數。
因此,若是6和29,由於存在著和是89的可能性,所以乙在第二步不能斷定那兩個數是6和29。

話說這個只是「有點難」的程度嗎……
作者: 钟七珍    时间: 2012-2-27 12:21:31     标题: 回复 21# 的帖子

  21楼说:“若是7和22,甲手中的和是29而乙手中的積是154的話,由於有和是79的可能性存在,因此乙在第二步不能斷定那兩個數是7和22。”的分析判断是错误的。似乎没有看懂我在17楼的分析解释。
  当乙手中的积是154时,甲手中的和只能是29,而不可能是79(或25)。若和是79(79可以等于32加49,或26加53,或20加59,或18加61,或12加67,或8加71,或6加73之和!而这几组数的积只有唯一的因数分解),甲第一步是不敢说“我知道乙也不知道这两个数”的!所以,乙根据甲的发言,断定甲手中的和只能是29,而不可能是79(或25)。因此乙在第二步就能斷定那兩個數是7和22。
作者: nnkken    时间: 2012-2-27 12:29:39

「79可以等於32加49,或26加53,或20加59,或18加61,或12加67,或8加71,或6加73之和!而這幾組數的積只有唯一的因數分解」
然而這些可能性皆不可能出現,因為:
32*49=1,568
26*53=1,378
20*59=1,180
18*61=1,098
12*67=804
8*71=568
6*73=438
全部都不符合「兩數之積小於260」的條件。
由於這些積不可能是乙手中所得的積,因此甲不需考慮「如果乙手中的積是438,那他就會知道是6和73了」之類的可能性。
因此,正如我在21樓所說,「和是79的話,只有兩種可能性:77+2(積為154)、76+3(積為228),其他可能性均不符合『積小於260』的條件。」

[ 本帖最后由 nnkken 于 2012-2-27 13:47 编辑 ]
作者: 钟七珍    时间: 2012-2-27 13:54:32

原帖由 nnkken 于 2012-2-27 12:29 发表
「79可以等於32加49,或26加53,或20加59,或18加61,或12加67,或8加71,或6加73之和!而這幾組數的積只有唯一的因數分解」
然而這些可能性皆不可能出現,因為:…………全部都不符合「兩數之積小於260」的條件。
由於這些積不可能是乙手中所得的積,因此甲不需考慮「如果乙手中的積是438,那他就會知道是6和73了」之類的可能性。

  这些数的乘积的确超出了“两数炎积小于260”这个条件。我把自己设置的条件也疏忽了!
  但乙为什么在第四步能猜断定这两个数是7和22呢?
作者: nnkken    时间: 2012-2-27 14:21:25

原帖由 鐘七珍 於 2012-2-27 13:54 發表

  這些數的乘積的確超出了「兩數炎積小於260」這個條件。我把自己設置的條件也疏忽了!
  但乙為什麼在第四步能猜斷定這兩個數是7和22呢?

因為積是154的話,和只能是29和79。
而和是79的話,積則可能是154和228。
但乙在第二步說,「我現在依然不知道那兩個數」。
228=76*3=57*4=38*6=19*12
76+3=79
57+4=61
38+6=44
19+12=31
以上四個和之中,只有當和是79時,甲才能在第一步說出「我知道乙肯定不知道」。
(61=2+59、44=3+41、31=2+29,在這三種情況下,乙均可以馬上知道那兩個數)
因此,如果和是79、積是228的話,乙在第二步就已經可以肯定和是79,進而推斷出那兩個數。
但乙沒有在第二步推斷出那兩個數。因此,甲在第三步就可以馬上知道,積不是228而是154,進而推斷出那兩個數是2和77。
但甲沒有在第三步推斷出那兩個數。因此,乙在第四步就可以馬上知道,和不是79而29,進而推斷出那兩個數是7和22。
作者: yq_118    时间: 2012-2-27 22:49:24

我写了个程序算了下,确实有三组解

(4, 43), (6, 29), (7, 22)

  1. #!/usr/bin/python3

  2. START = tuple((i, j)
  3.               for i in range(2, 91)
  4.               for j in range(i, 91)
  5.               if i + j > 11 and i * j < 260)


  6. def mem(f):
  7.     d = {}

  8.     def g(*args):
  9.         if args in d:
  10.             return d[args]
  11.         else:
  12.             d[args] = f(*args)
  13.             return d[args]
  14.     return g


  15. @mem
  16. def A0(sum):
  17.     return tuple(filter(lambda p: p[0] + p[1] == sum, START))


  18. @mem
  19. def B0(product):
  20.     return tuple(filter(lambda p: p[0] * p[1] == product, START))


  21. @mem
  22. def B1(product):
  23.     B = []
  24.     for p in B0(product):
  25.         if known_A_tB(A0(p[0] + p[1]), B0):
  26.             B.append(p)
  27.     return tuple(B)


  28. @mem
  29. def A2(sum):
  30.     A = []
  31.     for p in A0(sum):
  32.         if (known_B_tA(B0(p[0] * p[1]), A0)
  33.             and not known_B(B1(p[0] * p[1]))):
  34.             A.append(p)
  35.     return tuple(A)


  36. @mem
  37. def B3(product):
  38.     B = []
  39.     for p in B1(product):
  40.         if not known_A(A2(p[0] + p[1])):
  41.             B.append(p)
  42.     return tuple(B)


  43. @mem
  44. def A4(sum):
  45.     A = []
  46.     for p in A2(sum):
  47.         if known_B(B3(p[0] * p[1])):
  48.             A.append(p)
  49.     return tuple(A)


  50. def known_A(A):
  51.     return len(A) == 1


  52. def known_B(B):
  53.     return len(B) == 1


  54. def known_A_tB(A, Bn):
  55.     for p in A:
  56.         if known_B(Bn(p[0] * p[1])):
  57.             return False
  58.     return True


  59. def known_B_A(B, An):
  60.     for p in B:
  61.         if not known_A(An(p[0] + p[1])):
  62.             return False
  63.     return True


  64. def known_B_tA(B, An):
  65.     for p in B:
  66.         if known_A(An(p[0] + p[1])):
  67.             return False
  68.     return True


  69. def test(x, y):
  70.     A = A0(x + y)
  71.     if known_A(A) or not known_A_tB(A, B0):
  72.         return False

  73.     B = B0(x * y)
  74.     if known_B(B) or not known_B_tA(B, A0):
  75.         return False

  76.     B = B1(x * y)
  77.     if known_B(B):
  78.         return False

  79.     if known_B_A(B, A2) or known_B_tA(B, A2):
  80.         return False

  81.     A = A2(x + y)
  82.     if known_A(A):
  83.         return False

  84.     B = B3(x * y)
  85.     if not known_B(B):
  86.         return False

  87.     A = A4(x + y)
  88.     if not known_A(A):
  89.         return False

  90.     return True


  91. if __name__ == '__main__':
  92.     a = []
  93.     for p in START:
  94.         if test(p[0], p[1]):
  95.             a.append(p)
  96.     print(a)
复制代码

作者: nnkken    时间: 2012-2-27 22:58:36

……樓上強大……
我只懂用程序輔助列出某些情況的可能性列表……
作者: 钟七珍    时间: 2012-2-28 11:52:34

  谢谢27楼的编程分析!谢谢nnkken参与此帖的多次讨论!
  转了四步分析法的帖子之后,考虑能否扩展为五步分析呢?思考的结果原:题条件不变,只是多一步分析,仍然只有唯一的一组解(已知两个数的和与积,五步分析:
  有两个在2到99间的整数,告诉甲这两个数的和,告诉乙这两个数的积。由甲乙轮流发言,请甲先说。
  第一步,甲:我不知道这两个数,但我知道乙也不知道这两个数。
  第二步,乙:一开始我不知道之两个数,但知道甲也不知道这两个数:现在我仍然不知道是哪两个数。(乙还有一句话:“无法判断甲现在是否知道是哪两个数”没有说出来。)
  第三步,甲:我仍然不知道是哪两个数。
  第四步,乙:哈哈!我知道是哪两个数了!
  第五步,甲:哈哈,我也知道这两个数了!
  请问:这是哪两个数?)。
  后来想把难度加大,故设置了两个限制条件:“同时告知甲乙双方:两个数的和大于11、两数的积小于260”。但考虑不周,“两数的积小于260”这个条件反而带来多解(只设前一个条件,不设后一个条件,则此题无解)。
  好在多解有限,按17楼算法只有三解,勉强可仍作一题。
作者: yq_118    时间: 2012-2-28 20:47:52

如果把“两数的积小于260”里的260改成360就只有唯一解(16,19)了
作者: 钟七珍    时间: 2012-2-29 11:09:37

原帖由 yq_118 于 2012-2-28 20:47 发表
如果把“两数的积小于260”里的260改成360就只有唯一解(16,19)了

  谢谢楼上老师!不愧编程高手!
作者: aspirine    时间: 2012-10-3 14:33:41

这题好坑啊……
分析了几步想不下去了……




欢迎光临 魔方吧·中文魔方俱乐部 (http://bbs.mf8-china.com/) Powered by Discuz! X2