码迷,mamicode.com
首页 > 其他好文 > 详细

[猜数字]把两个数和告诉A,积告诉B,求这两个数是什么

时间:2014-09-26 00:42:07      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:blog   http   ar   strong   sp   art   on   c   log   

1-20的两个数把和告诉A,积告诉B,A说不知道是多少,B也说不知道,这时A说我知道了,B接着说我也知道了,问这两个数是多少?

分析:

设和为S,积为M。

首先,A:我不知道。

说明:S可以分解成多个组合,而2=1+1,3=1+2,40=20+20,39=19+20,只有一种分解方式,因此S应属于[4,38]集合。

其次,B:我也不知道。

说明:M也可以分解成多个组合,因此M不是质数。

再者,A:我现在知道了。

说明:S分解方式中只有一个相乘之后是合数,其他分解方式相乘之后都是质数。这样,A才能根据B说不知道,而排出所有相乘是质数(M是质数,分解方式只有一种:1*质数)的可能,剩下的一个相乘之后是合数的组合就是A所得到的解。

而相乘之后是质数的:只有1*质数 = 质数!

1-20的所有质数:T = {2, 3, 5, 7, 11, 13, 17, 19}。

设x为T中的任意一个质数。那么,S的可能取值集合:{2+1, 3+1, 5+1, 7+1, 11+1, 13+1, 17+1, 19+1},即:SS = {3, 4, 6, 8, 12, 14, 18, 20}

 S= 3时:3不在【4,38】集合,排除;

S= 4时:4=2+2=1+3,(2,2)相乘为4(非质数,满足条件),(1,3)相乘为3(质数,排除);

S= 6时:6=1+5=2+4=3+3,相乘分别为5,8,9,出现两个合数,排除;

其他值都是存在多个合数分解的情况,因此均排除了。

因此,A得到的解是2和2.

最后,B:我也知道了。

说明:B根据自己已知的M值,站在A的立场思考,能够获得M=4的结果,现在验证如下:

M=4=2*2=1*4,相加结果为4,5.而5不在SS集合之中,因此结果为2和2.

因此,最终答案为2和2.

【参考】

http://blog.csdn.net/yahohi/article/details/7453005

[猜数字]把两个数和告诉A,积告诉B,求这两个数是什么

标签:blog   http   ar   strong   sp   art   on   c   log   

原文地址:http://www.cnblogs.com/hellogiser/p/guessing-number.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!