梦中猪头 2004-8-17 13:26
现在公布答案!
<P>!!!!!!!!!请大家注意,由于本人自己的疏忽,导致本人的解法只适用于在原题中没有”不同的“整数这一条件的情况,而不使用于原题。当然大家如果有兴趣知道对于没有该限制条件的问题该怎么解决时,可以参看本解法!!!!!!</P>
<P>
</P>
<P>呵呵,本帖是针对 “<B>请问这几个数分别是什么?</B>”问题的答案,本来可以跟在那个问题的主帖后面的,不过不想爬楼了,自己当回楼长把。</P>
<P>题目是:有3个人A、B、C分别手里拿着3个不同的整数a、b、c,已知a是个位数,b是两位数,c是a和b的乘积且小于60。先问C说你知道其他两个数是多少吗?C说不知道;又问B说你知道吗?B也说不知道;然后又问C说这回你知道了吗?C说不知道;这时让A离开,当着C的面问B说你该知道了吧?B说不知道;再叫来A(A不知道B知道了没有),问A说你知道了吗? A说不知道,然后再问C, C说我知道了。请问这几个数分别是什么?
</P>
<P>首先我曾说过一次答案,但实在不好意思,本人太粗心了,犯了一个计算错误,而且把自己的思路搞乱了,昨天重新清理了一下思路,才发现这个错误。</P>
<P>答案是:10,3,30 12,3,36</P>
<P>奇怪了,一个问题怎么会有不唯一的两个答案呢?别急,听我慢慢说你就明白了</P>
<P>首先,我们不考虑对任何人的问话以及答案,只考虑条件"有3个人A、B、C分别手里拿着3个不同的整数a、b、c,已知a是个位数,b是两位数,c是a和b的乘积且小于60",把所有满足条件的C列出来,一定是:10到59中的任何一个数。</P>
<P>然后,我们从中找出C一拿到就可以确定ABC分布的数字,也就是说如果C是这些数字的话,那么在第一问C时C就会回答知道,这些数字有:</P>
<P>10 12 14 15 16 18 21 25 27 35 49 以及小于60大于10的所有质数,我们不列出这些质数,不过大家还是要记住他们</P>
<P>为什么这些数字C一拿到就“知道”?不用我解释了吧</P>
<P>我们把前面这11个数字叫做“数字组1”,请大家记住“数字组1”,以后要用</P>
<P>现在,我们再来列出第二次问C时C会回答“知道”的所有C,这些数字有:</P>
<P>32 33 34 38 39 42 45 46 50 51 54 55 57 58 我们把它们叫做“数字组2”,也请记住</P>
<P>我简单解释一下为什么这些数字C在第二次会回答“知道”,这当中有不同的情况,举例说明第一种情况:</P>
<P>C=33 C会在第一次时说“不知道”,因为C会考虑:</P>
<P>B=33(B会回答“知道”) B=11(B会回答“不知道")</P>
<P>C就知道:如果B”知道“则33 1 33;如果B"不知道"则33 3 11</P>
<P>解释一下B=33时会回答知道,虽然非常简单,但对以后的分析有帮助</P>
<P>B=33 时B会考虑如下情况</P>
<P>C=66(不可能!!) C=33(C不知道)</P>
<P>所以B知道</P>
<P>再举一例:C=54 C也会在第一次说”不知道“,因为C认为B:</P>
<P>可能: B=54(B会”知道“) B=27(B”知道“) B=18(B”不知道“)</P>
<P>C根据B的”不知道“,就可以知道B=18,其实如果C=54而B回答”知道“,C反而”不知道“了,因为他不能确定B是54还是27,不过这跟本题的情况不符。</P>
<P>简单解释一下如果B=27,那么在问他时他为什么会”知道“,因为如果B=27,则会考虑:</P>
<P>C=27(数字组1,C第一次就知道) C=54(C不知道)</P>
<P>所以B知道</P>
<P>B=54时的原因跟B=33时的原因一样</P>
<P>现在我们可以分析出”数字组2“的规律了,假如C则:</P>
<P> C</P>
<P>列出对应C所有可能的B: B1 B2 B3</P>
<P>列出对应所有B的所有C: C11 C12 C13... C21 C22 C23.... C31 C32....</P>
<P>如果在以上n个分支(B1,B2...Bn)中任意至少(n-1)支的Cn能被唯一确定,则C 属于”数字组2“,所谓”唯一确定“,指属于同一组的C(如:C11,C12,C13...)只有一个不属于下列三种情况:”不可能数(如62)“、”数字组1中数“和”质数“</P>
<P>说得这么复杂,举个几个例子大家就明白了</P>
<P>举例说明: C=58</P>
<P>B1=58 B2=29</P>
<P>C11=58 C12=116(不可能数) C21=29(质数) C22=58</P>
<P>现在就是两个分支都”唯一确定“</P>
<P> C=45</P>
<P>B1=45 B2=15</P>
<P>C11=45 C12=90(不可能数) C21=30(质数) C22=45</P>
<P>现在就是一个分支”唯一确定“</P>
<P>好了,现在我们再来看10----59之间除开了“数字组1”,“数字组2”,“质数”,那么还剩下哪些数字呢?只有:20 22 24 26 28 30 36 40 44 48 52 56</P>
<P>告诉大家,这些数字中除了30,36以外,其他数字无论问多少次,他们都不会知道(其原因见后),现在我们按照前面的方法来分解30和36,并且吧”唯一确定“的标准扩展为四种情况:”不可能数(如62)“、”数字组1中数“、”质数“、”数字组2中数“,有:</P>
<P> C=30</P>
<P> B1=15 B2=10 B3=30</P>
<P>(C11=15 C12=30 C13=45) ( C21=10 C22=.....) ( C31=30 C32=60)</P>
<P>可以看出B1和B3分支可以”唯一确定“,因C11属于数字组1,C13属于数字组2,C32属于”不可能数“</P>
<P> C=36</P>
<P> B1=12 B2=18 B3=36</P>
<P>(C11=12......) (C21=18 C22=36 C23=54) (C31=36 C32=72)</P>
<P>可以看出B2和B3分支可以”唯一确定“,因C21属于数字组1,C23属于数字组2,C32属于”不可能数“,这时我把复合”扩展唯一确定标准“的30,36记为”数字组3“,剩下的为”数字组4“</P>
<P>数字组3中的数字实际上就是在B第二次回答”不知道“后C会知道的数字,道理很简单:</P>
<P>以36来说,根据我们上面的分解,可知如果B=18,则通过C的第二次不知道,B能判断C不可能是54(因为54是”数字组2”中的,是C第二次会知道的数),则C只能是36,故B会回答“知道”,而B回答的“不知道”,则C就知道B是12。</P>
<P>C=30时也是同样的原因。</P>
<P>好了,规律出来了:</P>
<P>1.质数、数字组1,不可能数,是C在第一次被问时知道(广义的“知道”哈)的数,其实我们可以把这些数字统称为“广义数字组1”</P>
<P>2.数字组2,是通过分解和唯一确定标准得到的数字,此时唯一确定标准用“广义数字组1”,数字组2中的数字是C第二次被问时知道的,现在把“广义数字组2”和“数字组2”合并,就得到了“广义数字组2”</P>
<P>3.得到数字组3,怎么来的不用我再说了吧,这个数字组是C在第三次被问时知道的。</P>
<P>根据以上规律得知数字组4是永远不能知道的,为什么呢?大家动手算一下就知道。</P>
<P>可是为什么是两个答案呢?还有就是让不让A离开有什么关系吗?其实让A离开表示A有可能根据B的第二次不知道结合自己的数字得知所有的数字,但在本题中这是不可能的,因为在本题中A可能等于1,2,3,4,不论A知道不知道B对情况的判断,A也不能确定,因为A=1,2,4时A只能够确定C属于数字组4(具体是多少不知道),而A=3时A能够确定C是属于数字组3,但他仍然不知道是30还是36,而此时C根据自己的数字就知道。因此这是本题的一个毛病。</P>
<P>其实如果要改一下题目,把”小于60“改为”小于等于60“,这时答案就唯一了:12,3 ,36</P>
<P>大家可以分析一下。</P>
<P>好了,希望大家能看懂,好累哦</P>
<P> </P>
<P> </P>
[align=right][color=#000066][此贴子已经被作者于2004-8-17 15:39:12编辑过][/color][/align]
UFO_X 2004-8-17 14:26
<P>说说30吧。这是可以排除的。借用前人(?)的方法。</P><P>30=2*15=3*10=1*30</P><P>首先1*30被排除因为B不能大于29。然后,C不知道,这是肯定的,因为还有两个可能。B也不知道。我们分开考虑,B如果是15的话,那么他就知道A是2或者3。其中3是不可能的。因为3*15等于45,这样C第一次就知道了,3被排除,所以B知道A是2——不符合题意也被排除。最后B只能是10。然后C就知道答案了,也被排除。</P><P>以上只是排除C是30的可能。具体证明3*12=36,实在太麻烦就不详述了,大致上,我是用一个表格,然后依序排除不符合题目的C或者B。最后表格可以看出,当A是1,2,4时,C都有重复的出现。只有当A等于3的时候,C还有四种可能性。其中三个是唯一的,只有36不是。我想,这就是为什么把A叫出去的原因吧?不过有些地方我也有点乱,好想明白好像不明白。</P>
LIKEME 2004-8-17 14:28
<P>献花,跟我的答案一样嘛:)
贡献下我偷懒的作法:做个EXCEL文件,所有可能的全部列出来。
按C列排序,C不知道,把C列有唯一值的去掉(C列有唯一值C就可以判断出结果);
B不知道,在刚才基础上按B列排序,把B列有唯一值的去掉。
依次类推。。。
知道的时候该列显然有唯一值。</P>
梦中猪头 2004-8-17 14:40
[quote]<B>以下是引用<I>UFO_X</I>在2004-8-17 14:26:53的发言:</B>
<P>说说30吧。这是可以排除的。借用前人(?)的方法。</P>
<P>30=2*15=3*10=1*30</P>
<P>首先1*30被排除因为B不能大于29。然后,C不知道,这是肯定的,因为还有两个可能。B也不知道。我们分开考虑,B如果是15的话,那么他就知道A是2或者3。其中3是不可能的。因为3*15等于45,这样C第一次就知道了,3被排除,所以B知道A是2——不符合题意也被排除。最后B只能是10。然后C就知道答案了,也被排除。</P>
<P>以上只是排除C是30的可能。具体证明3*12=36,实在太麻烦就不详述了,大致上,我是用一个表格,然后依序排除不符合题目的C或者B。最后表格可以看出,当A是1,2,4时,C都有重复的出现。只有当A等于3的时候,C还有四种可能性。其中三个是唯一的,只有36不是。我想,这就是为什么把A叫出去的原因吧?不过有些地方我也有点乱,好想明白好像不明白。</P>[/quote]
<P>我现在还在写一个帖子,写完再回答你哈</P>
LIKEME 2004-8-17 14:40
[quote]<B>以下是引用<I>UFO_X</I>在2004-8-17 14:26:53的发言:</B>
<P>说说30吧。这是可以排除的。借用前人(?)的方法。</P>
<P>30=2*15=3*10=1*30</P>
<P>首先1*30被排除因为B不能大于29。</P>[/quote]
<P>
<P>为什么?30×1=30在第一次C回答的时候是不能排除的,只能在B回答不知道后才能排除。</P>
<P>如果是30=10×3,第一次C显然不知道(可能是30=30×1,30=15×2,30=10×3),B也不知道(10×2=20,10×4=40,10×3=30,10×5=50四种情况下C都不知道的)。
第二次C仍然不知道(他只能排除30=30×1,还有30=15×2,30=10×3两种可能),B也不知道(注意他拿到的是10)</P>
<P>OK,这时候C可以按你的逻辑判断出B拿的不是15了,只能是30=10×3,符合题意。</P>
LIKEME 2004-8-17 14:41
[quote]<B>以下是引用<I>UFO_X</I>在2004-8-17 14:40:05的发言:</B>
<P>最后的唯一是指该行唯一留下的吧?</P>[/quote]
最后的唯一是该列有某个(或某几个)值是唯一的。
LIKEME 2004-8-17 14:47
[quote]<B>以下是引用<I>UFO_X</I>在2004-8-17 14:45:51的发言:</B>
不是,我剩下三个唯一值,但是在该行只有1个36。[/quote]
你的30=30×1是在哪个问题后排除的?
UFO_X 2004-8-17 14:54
我排除30不是这样排除的。刚才我好像是说反了,按照刚才说的,30应该被保留。
林园客 2004-8-17 14:56
<P>有3个人A、B、C分别手里拿着3个不同的整数a、b、c,已知a是个位数,b是两位数,c是a和b的乘积且小于60。</P><P>a是个位数,肯定不是0也不是1,a可能是2--5</P><P>b是两位数,b是10--29;</P><P>c是a和b的乘积且小于60,c是20--58之间的合数。</P><P>先问C说你知道其他两个数是多少吗?C说不知道;</P><P>c是30--58之间的合数。</P><P>除了1乘自身外还得至少有两种办法写成一个一位数乘以一个两位数。</P><P>c=30=2*15=3*10</P><P>c=36=2*18=3*12</P><P>c=40=2*20=4*10</P><P>c=42=2*21=3*14</P><P>c=44=2*22=4*11</P><P>c=48=2*24=3*16=4*12</P><P>c=50=2*25=5*10</P><P>c=52=2*26=4*13</P><P>c=54=2*27=3*18</P><P>c=56=2*28=4*14</P><P>又问B说你知道吗?B也说不知道;</P><P>
</P><P>b肯定在10-19之间。</P><P>
</P><P>然后又问C说这回你知道了吗?C说不知道;</P><P>
</P><P>肯定b在10-19也有两种可能,只能是</P><P>
</P><P>c=30=2*15=3*10</P><P>
</P><P>c=36=2*18=3*12</P><P>
</P><P>c=48=3*16=4*12</P><P>这时让A离开,当着C的面问B说你该知道了吧?B说不知道;</P><P>b=12,a=3或4</P><P>再叫来A(A不知道B知道了没有),问A说你知道了吗? A说不知道</P><P>c=30=2*15=3*10</P><P>c=36=2*18=3*12</P><P>c=48=3*16=4*12</P><P>a当然不是4了。</P><P>然后再问C, C说我知道了</P><P>当然是3*12=36了。</P>
UFO_X 2004-8-17 14:57
<P>最后剩下三个数字是唯一的,不过已经证明两个是错的——还有一个是30,所以我通过A来判断是36。</P>
林园客 2004-8-17 14:57
<P>这时让A离开,当着C的面问B说你该知道了吧?B说不知道;</P><P>B和C都应该分析出b=12,a=3或4</P>
LIKEME 2004-8-17 15:02
哦,SORRY,题目三个不同的整数没注意。
这样就是唯一解:36=12×3
UFO_X 2004-8-17 15:05
原来如此,那么30也能被排除了。不过好像大家的解题过程都不太一样啊
LIKEME 2004-8-17 15:09
楼主的作法是正确的,当然象我那么画表也是对的:)
这个题目实际上A的条件是没有用的。
梦中猪头 2004-8-17 15:28
<P>唉,少看两个字,搞得我多花了好多功夫,我一直没注意到”不同的“三个字,我的做法是针对没有这个限制的,早知道就简单了。</P>