Board logo

标题: 这道推理题怎么做呢? [打印本页]

作者: veishid    时间: 2007-8-26 11:30     标题: 这道推理题怎么做呢?


A teacher says: I'm thinking of two natural numbers bigger than 1. Try to guess what they are.

The first student knows their product(乘积) and the other one knows their sum.

First: I do not know the sum.

Second: I knew that. The sum is less than 14.

First: I knew that. However, now I know the numbers.

Second: And so do I.

What were the numbers?

作者: vistafans    时间: 2007-8-26 13:42

哈哈 看来我是第一了

答案应该是   暂时还不知道

[ 本帖最后由 vistafans 于 2007-8-26 22:56 编辑 ]
作者: veishid    时间: 2007-8-26 19:13

不对~~~~~~~~
作者: wdpfox    时间: 2007-8-26 19:37

They are 3 and 4.  
作者: xmxiaolu    时间: 2007-8-26 19:47

原帖由 vistafans 于 2007-8-26 13:42 发表 http://bbs.ioage.com/cn/images/common/back.gif
哈哈 看来我是第一了

答案应该是 4和8  对不?




[ 本帖最后由 xmxiaolu 于 2007-8-26 19:48 编辑 ]
作者: xmxiaolu    时间: 2007-8-26 19:58

The condition is:
x,y∈n
1<n<14
x>1
y>1
x+y<14
x*y≠3,5,7,9,11,13
x+y≠x*y
作者: veishid    时间: 2007-8-26 20:25

First: I knew that. However, now I know the numbers.
这句话什么意思,I knew that,注意knew是过去式,那么First说的是他knew什么呢?
作者: xmxiaolu    时间: 2007-8-26 21:14

#include <iostream>
using namespace std;
int multiplication(int x,int y)
{
        int n=x*y;
        int i,j;
        for(i=2;i<12;i++)
        {
                for(j=2;j<12;j++)
                        if((n==i*j)&&(i+j<14))
                        {
                                if((x!=i && y!=j)&&(x!=j && y!=i))
                                        return 1;
                        }
        }               
        return 0;       
}
void main()
{
        int x,y;
        for(x=2;x<12;x++)
        {
                for(y=2;y<12;y++)
                {
                        if(multiplication(x,y))
                        {
                                if((x+y<14)&&((x*y)!=(x+y)))
                                {
                                        cout<<"x="<<x<<endl
                                                <<"y="<<y<<endl;
                                        cout<<"The end!"<<endl;
                                }
                        }
                }
        }
        return;
}

[ 本帖最后由 xmxiaolu 于 2007-8-26 23:10 编辑 ]
作者: xmxiaolu    时间: 2007-8-26 21:25

x=2,2,2,2,,,3,3,3,3,,,4,4,4,4,5,5,5,6,6,6,6,8,8,8,9,9,10,10
y=6,8,9,10,4,6,8,10,4,5,6,9,4,6,8,2,4,5,6,2,3,5,2,4,,2,,3
作者: 那巴尔    时间: 2007-8-26 21:30

不研究,叫wany来
作者: veishid    时间: 2007-8-26 21:35

条件没有利用完整,所以出了很多错误的答案,正确的答案应该只有一个才对~
作者: vistafans    时间: 2007-8-26 21:38

原帖由 xmxiaolu 于 2007-8-26 21:25 发表 http://bbs.ioage.com/cn/images/common/back.gif
x=2,2,2,2,,,3,3,3,3,,,4,4,4,4,5,5,5,6,6,6,6,8,8,8,9,9,10,10
y=6,8,9,10,4,6,8,10,4,5,6,9,4,6,8,2,4,5,6,2,3,5,2,4,,2,,3


太离谱了吧
作者: wxadqeszc    时间: 2007-8-26 21:40

不研究,只灌水!
作者: wdpfox    时间: 2007-8-26 21:46

正确的答案应该只有一个才对,是3和4
作者: xmxiaolu    时间: 2007-8-26 21:49     标题: 回复 #14 wdpfox 的帖子

那4和9不行么?
3跟4,
4不可以跟3么?
作者: veishid    时间: 2007-8-26 21:50

说出答案的能解释一下过程,思路啊,这样大家好交流,不用信口开河~
我感觉xmxiaolu的解题态度就挺好,虽然答案错了,不过给出了过程思路也好让其他人有一些失败的经验~使得其他人少走一些弯路了~
作者: wdpfox    时间: 2007-8-26 21:58

问的是这两个数是几,3和4 ,与4和3 是一种答案,
作者: xmxiaolu    时间: 2007-8-26 21:58

题目的意思是说,两个自然数都大于1,a知道乘积x*y,b知道和x+y,并且和小于14.

a不知道x+y,说明,x*y不等于x+y,(比如4和4,4*4=16=2*8,所以a不敢说4和4,因为2*8也等于16,但是4+4=8,2+8=10,8不等于10,所以a知道x*y)。

b知道x+y,他不知道x*y,他只知道x+y<14,这种只能得出一个条件,还能得出其他的条件么?
作者: xmxiaolu    时间: 2007-8-26 22:00     标题: 回复 #17 wdpfox 的帖子

What were the numbers?

叫你说出的是x与y的值,并不是说有几种答案
作者: xmxiaolu    时间: 2007-8-26 22:01

楼上的在我的数据中找出一个反例,我就算服了
作者: xmxiaolu    时间: 2007-8-26 22:04

First: I knew that. However, now I know the numbers.

那个numbers.用的是复数,说明不止一个数
作者: wdpfox    时间: 2007-8-26 22:04

甲知道两数的积,乙知道两数的和;对于甲来说,他知道是积为12,但这两个数可以是3,4;
还可以是2,6;从而它们的和是不确定的,所以甲说,他不知道这两个数的和是多少
作者: vistafans    时间: 2007-8-26 22:05

原帖由 wdpfox 于 2007-8-26 22:04 发表 http://bbs.ioage.com/cn/images/common/back.gif
甲知道两数的积,乙知道两数的和;对于甲来说,他知道是积为12,但这两个数可以是3,4;
还可以是2,6;从而它们的和是不确定的,所以甲说,他不知道这两个数的和是多少


道理是这样 但不确定是不是3 4

[ 本帖最后由 vistafans 于 2007-8-26 22:14 编辑 ]
作者: vistafans    时间: 2007-8-26 22:09

原帖由 veishid 于 2007-8-26 20:25 发表 http://bbs.ioage.com/cn/images/common/back.gif
First: I knew that. However, now I know the numbers.
这句话什么意思,I knew that,注意knew是过去式,那么First说的是他knew什么呢?


关键在这里吧
作者: xmxiaolu    时间: 2007-8-26 22:10

原帖由 wdpfox 于 2007-8-26 22:04 发表 http://bbs.ioage.com/cn/images/common/back.gif
甲知道两数的积,乙知道两数的和;对于甲来说,他知道是积为12,但这两个数可以是3,4;
还可以是2,6;从而它们的和是不确定的,所以甲说,他不知道这两个数的和是多少

甲怎知道是12呢?13不行么(当然不行,因为13是素数,只能被本身跟1相除,但题目有说明甲乙都大于1,所以不能)?36呢?
甲知道是36的话,因为36=4*9=6*6,而(4+9)!=6+6<14(小于14,符合乙的条件呢),所以他也不敢说这两个数是什么嗄
作者: xmxiaolu    时间: 2007-8-26 22:13

原帖由 xmxiaolu 于 2007-8-26 22:01 发表 http://bbs.ioage.com/cn/images/common/back.gif
楼上的在我的数据中找出一个反例,我就算服了



找出来就服。

knew说明的是甲在乙说后已经知道了
作者: vistafans    时间: 2007-8-26 22:23

我觉得3,4是不可能的。假设first知道的积为12,那么在second说和小于14的时候first也无法判断出3,4还是2,6的

----------谬误

[ 本帖最后由 vistafans 于 2007-8-26 23:08 编辑 ]
作者: wdpfox    时间: 2007-8-26 22:24

但乙从甲的话中得知,这两个数的积是两组大于1的自然数的乘积,从他知道这两个数的和,这两个数的积只能分为两种情况,经分析,当乙知道的和为7,8,10,分析得:答案为:3,4;2,6;4,6;
请朋友们证评判
作者: veishid    时间: 2007-8-26 22:26

First: I knew that. However, now I know the numbers.
++++++++++++++++++++++++++++++++++++++++
这句话意思是说:甲一开始也知道两数的和<14
++++++++++++++++++++++++++++++++++//声明一下
作者: xmxiaolu    时间: 2007-8-26 22:26

原帖由 wdpfox 于 2007-8-26 22:24 发表 http://bbs.ioage.com/cn/images/common/back.gif
但乙从甲的话中得知,这两个数的积是两组大于1的自然数的乘积,从他知道这两个数的和,这两个数的积只能分为两种情况,经分析,当乙知道的和为7,8,10,分析得:答案为:3,4;2,6;4,6;
请朋友们证评判

乙知道的和为7,8,10??你怎知道,乙不是只知道甲乙的和小于14么?
作者: xmxiaolu    时间: 2007-8-26 22:49

原帖由 veishid 于 2007-8-26 22:26 发表 http://bbs.ioage.com/cn/images/common/back.gif
First: I knew that. However, now I know the numbers.
++++++++++++++++++++++++++++++++++++++++
这句话意思是说:甲一开始也知道两数的和


嗯,我错了。
作者: vistafans    时间: 2007-8-26 22:52

原帖由 xmxiaolu 于 2007-8-26 22:13 发表 http://bbs.ioage.com/cn/images/common/back.gif



找出来就服。

knew说明的是甲在乙说后已经知道了



根据楼主在#29的提示 你的数据中 3,10就不满足条件30=2*15, 2+15=17>14
作者: xmxiaolu    时间: 2007-8-26 22:54

原帖由 vistafans 于 2007-8-26 22:52 发表 http://bbs.ioage.com/cn/images/common/back.gif



根据楼主在#29的提示 你的数据中 3,10就不满足条件30=2*15, 2+15=17>14


老大,我给出的是答案,3,10不满足么?

的确,这个3.10是错误的,我看看其他的先。

[ 本帖最后由 xmxiaolu 于 2007-8-26 22:58 编辑 ]
作者: veishid    时间: 2007-8-26 22:59

3 10肯定不满足,如果是这答案的话,那么甲(知道乘积的那个)就不会说“我一开始也知道两数的和<14(First: I knew that. However, now I know the numbers.)” ,因为3*10=30,而30又可拆分成2*15,而2+15=17>14
作者: veishid    时间: 2007-8-26 23:03

哎,最后几个排除不了,回去再想想,看看怎么样~
作者: vistafans    时间: 2007-8-26 23:03

假设A知道的是30,30的组合有2*15,3*10,5*6,这其中2+15=17,而他后来说 “本来就知道和小于14”即是在B说之前就知道了,那么是不是可以得出“这个乘积的所有因子的和都小于14呢”
作者: vistafans    时间: 2007-8-26 23:05

真让人抓狂 呵呵

[ 本帖最后由 vistafans 于 2007-8-26 23:07 编辑 ]
作者: xmxiaolu    时间: 2007-8-26 23:11

嗯,在排除了3.10不符合以外,其他的应该都能入赛吧
作者: xmxiaolu    时间: 2007-8-26 23:13     标题: 回复 #36 vistafans 的帖子

如果这样想,乙是不可能知道什么值的,他手上只有x+y<14这个条件。
作者: vistafans    时间: 2007-8-26 23:18     标题: 回复 #39 xmxiaolu 的帖子

的确 乙的那一句对于甲看似没用的话为什么会让甲得到结果 想不通
作者: xmxiaolu    时间: 2007-8-26 23:23

算了,睡觉去,有谁知道我的答案中除了3.10的话还有其他错误,那告诉我啊
作者: xmxiaolu    时间: 2007-8-26 23:29

原帖由 vistafans 于 2007-8-26 23:18 发表 http://bbs.ioage.com/cn/images/common/back.gif
的确 乙的那一句对于甲看似没用的话为什么会让甲得到结果 想不通


难道那个knew打错????
作者: vistafans    时间: 2007-8-26 23:33     标题: 回复 #42 xmxiaolu 的帖子

呵呵 还没睡呀 甭想啦 睡个好觉
作者: midavid    时间: 2007-8-27 16:37

应该是2和9,分析如下

第一个人说“I do not know the sum.”第二个人回答“I knew that”,说明他手里的数字无论怎么样拆,第一个人都猜不出来
如果第二个人是13,那如果第一个人拿的是11*2=22,那第一个人就能猜出来
如果第二个人是12,那如果第一个人拿的是9*3=27,那第一个人就能猜出来
如果第二个人是11,那无论第一个人是9*2,8*3,7*4,6*5,第一个人从乘积都不能猜出唯一的答案。
如果第二个人是10,如果第一个人拿的是7*3=21,第一个人可以猜出来
如果第二个人是9,那如果第一个人拿的是7*2=14,第一个人可以猜出来
如果第二个人是8。。。。依次类推,可以发现只有11,无论怎么拆,第一个人都猜不出来。

那么11有四种拆法,9*2,8*3,7*4,6*5
而当第二个人说“The sum is less than 14”.第一个人回答“I knew that. However, now I know the numbers”的I knew that 表示在第二个人说之前他就知道两数和是小于14的
四种拆法中只有2×9=18不论怎么拆(2×9或3×6),两因子和都是小于14的
而比如7×4=28=2×14,2+14就大于14
所以答案就是2和9
作者: veishid    时间: 2007-8-27 19:45

楼上厉害~原来第二个人说的“I knew”也得做一番考证,刚开始我一直以为第二个人说“I knew”是指knew sum<14,而真正的“knew”是知道“第一个人不知道和”~~

关键就在于这两个I knew了~~
作者: kemad    时间: 2007-8-27 21:45     标题: 回复 #44 midavid 的帖子

牛人,五体投地!!!
作者: wxadqeszc    时间: 2007-8-27 22:41

英语阅读理解




欢迎光临 世界之窗论坛 (http://bbs.theworld.cn/) Powered by Discuz! 7.2