坏笑声音效搞怪:【IQ】一道逻辑推理题.(听说可用C++程序推算?)

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/02 19:09:40
1<x<y<30
将x+y告诉甲,将x*y告诉乙
下面是甲乙对话
甲说:“我不知道x和y是多少,但你也不知道”
乙说:“我知道x和y分别是多少了!”
甲说:“我也知道了”
问x和y分别是多少?

甲说:“我不知道X和Y是多少,但你也不知道”

说明x+Y一定不能拆成2个素数,且1排除:5,7,8,9,10,12,13,14,15,16,18,19,20,21,22,24,25,26,28,30,31,32,34,36,
40,42,46,48,52.
剩下:6,11,17,23,37,29,33,35,37,38,39,41,43,44,45,47,49,50,51,53~59.

乙说:“我知道X和Y分别是多少了!”
说明x*y仅有一种方式分解后的和在上面所例的剩下中

6:2*4=8
11:2*9=18、3*8=24、4*7=28、5*6=30
17:2*15=30、3*14=42、4*13=52、5*12=60、6*11=66、7*10=70、8*9=72
23:2*21=42、3*20=60~~~~~
~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~

表不写了我用c++,编程打出来了~~~~~~~~~~~

这里30,42,60等出现了很多次
因为他们是6=2*3的倍数,象这样同为两个素数乘级的倍数将常常不止一组分拆
所以乙得到的不可能是这样的数(这里必须同时满足2数和也在上表中所以不一定都排除)

这里满足要求的有
甲,乙
6,8(但8只能有2*4,乙一开始就可以知道,甲不会说你也不知道)
11,18
11,24
17,52

23,76
23,112
27,50
27,92
29,54
29,168
35,304(但304=16*19=8*38=4*76=2*152,x,y同在30以内只有16*19,所以排除,理由同8)
37,232(但304=8*29=4*58=2*116,x,y同在30以内只有8*29,所以排除,理由同8)

甲说:“我也知道了”
说明甲的数只能有唯一的乙数才可以
这里只有17,52对的4,13了~~~~~~~

楼上talentleon 果然是高手
不过偶不懂C++语言
还有其他高手有意见吗?