一个有意思的逻辑训练题目
题目如下:
有两个大于1小于100的自然数x,y,老师告诉小明两个数的和,告诉小强两个数的积。已知小明和小强足够聪明。
下面是两个人的对话:
小强:我不知道这两个数是多少。(<沉默中>...)
小明:我知道你不知道。(我不知道这两个数是多少,而且你也不知道。)
小强:那我知道了。(你说的对,不过我现在知道了。)
小明:那我也知道啦。(额...那我也知道啦。)
问这两个数是多少?
PS:个人觉得对话改成小括号里面的也是一样的,对解题逻辑没有影响。
下面是我们的逻辑链条:
step1 "小强:我不知道这两个数是多少。"
常理来说,只给两个自然数x,y之积,小强有很大概率不知道这两个数是多少。但也有一些情况小强会知道,比方说这个积是21(只能分解为两个素数,那么这两个数只能是3和7);或者是25(这两个数只能是5和5);或者是27(这两个数只能是3和9)。换句话说,老师给小强的这个积x*y至少有3个素因子,且这三个素因子不全相同。
step2 “小明:我知道你不知道。”
小明说的这句话就比较有意思啦。为什么小明就那么笃定小强一定不知道这两个数是多少呢?下面我们来一一分析:
就是因为x*y至少有三个不全相同的素因子,小强才不知道这两个数x和y。
小明敢如此笃定,一定是他知道的信息没有给小强推断出来这两个数的任何可能性。也即他知道x+y后,能判断出x和y没有都是素数的可能性,也没有一个是素数,另一个是这个素数的平方的可能性。
根据1+1猜想(好像还没有完全证明):即任意一个大于2的偶数都可以表示为两个素数的和。
(当然,有些奇数也可以表示为两个素数的和,比如13可以表示为2和11)
我们可以推知小明拿到的和x+y不可能是偶数 。(如果是的话,那么这两个数有可能都是素数,小强也就不敢那么笃定了)
这样就完了吗?显然不。
也就是说这两个数的和x+y是奇数就能保证这两个数不能同时是素数了吗,别忘了有个比较特殊的自然数2(既是偶数又是素数)。那么x+y是奇数,x+y-2还是奇数,且x+y-2是个奇合数(杜绝了一个是2,另一个是3,5,7,11,13这种可能性)
除此之外,不要忘记了,x+y不能一个是某个素数,另一个是此素数的平方。
至此,我们最好把x+y的可能性在1到200之内遍历一下 :
1到100+2之内(x+y-2是个奇合数):
11 17 23 27 29 35 37 41 47 51 53 57 59 65 67 71 77 79 83 87 89 95 97 101
103到200之内的所有奇数也都满足(这个时候不会有2来参合了)
step3 “小强:那我知道啦”
首先我们要明确的一点:小强知道了,但并不代表我们知道了。
小强知道一偶一奇的时候已经知道这两个数了,那么x*y为三个因子,其中一个为2,另外两个也为质数且相同。
也即是,小强手里的x*y的三个因子有两种可能,假设n为质数且n不等于2
其一:三个因子分别为:2,2,n
若x=4,y=n,奇偶,
若x=2,y=2n,同为偶
奇偶唯一,成立
其二:2,n,n,(n>=3)
若x=2n,y=n,奇偶
若x=2,y=n^2,奇偶(质数的平方仍为奇数)
X、Y奇偶不唯一,不成立
所以小强手里的x*y的三个因子必定为2,2,n类型且其中一个数为4
小强知道x*y,进而可以求出x、y。
step4 小明:那我也知道啦。
小明知道了x*y为三个因子,其中两个为2,另外一个为质数。
并为2,2,n类型,同时x、y中一个为4。
结合x+y,进而求出另外一个数。
一个有意思的逻辑训练题目相关推荐
- python有趣代码-一个有意思的 Python 训练项目集
逛 GitHub 的时候,发现了一个很酷的 Python 训练项目集.一共有 25 个题目,基本涵盖了用 Python 实现的各种功能. 上一周没有复习 C++ 和网络通信全部用来玩这几个题了.题目地 ...
- 【Python】简单的逻辑训练题目(计算机二级练习题)
目录 第一题 第二题 第三题 第四题 第一题 x=10 while x:x-=1if x%2:print(x,end='')else:pass 用到的知识: end = ' '的意思是取消换行. %符 ...
- 几个常见的逻辑训练及参考答案
几个常见的逻辑训练 假设有一个池塘,里面有无穷多的水.现有2个空水壶,容积分别为5升和6升.问题是如何只用这2个水壶从池塘里取得3升的水. 参考:第一次先用6升的壶盛满水倒入5升的壶中,剩余1升水,倒 ...
- js之一个有意思的逻辑题
js之一个有意思的逻辑题 昨天偶然看见一个技术群里面在讨论一道js的逻辑题,很快就有人给出答案来了,但是我却想了半天,这里之所以记载,不是单纯的记录一种答案,而是多种,废话不多说,直接上题目 定义一个 ...
- 思维训练让你更高、更强 |【逻辑思维能力】「刷题训练笔记」假设法模式逻辑训练题(6-8)
每日一刷 思维训练让你更高.更强! 题目6 一句问路的话 一个人站在岔道口,分别通向A国和B国,这两个国家的人非常奇怪,A国的人总是说实话,B国的人总是说谎话.路口站着一个A国人和一个B国人:甲和乙, ...
- java学习之编程逻辑训练
java学习之编程逻辑训练 案例1:买飞机票 分析 需要输入的变量:季节(旺季/淡季可以与后面的月份合并),舱位(经济舱/头等舱,字符串类型),机票原价(应该是浮点型),月份(整型) 定义方法录入机票 ...
- 发现一个有意思的博主(科研工作者)
科学网 这个社区好像都是大学老师? 发现一个有意思的博主,王立新的博客: http://blog.sciencenet.cn/u/fuzzywanglixin 博主写的文章有点意思啊,感觉很是犀利. ...
- 荣耀v9系统升级 服务器,荣耀V9首次系统升级 带来一个有意思的新功能
原标题:荣耀V9首次系统升级 带来一个有意思的新功能 近日,刚刚上市半个月的安卓旗舰新机荣耀V9迎来了首次系统升级,新的固件版本号为"B113".这次更新带来了"3D创意 ...
- 一个没暂时没有办法实现的问题和一个有意思的小问题!
1.暂时没有实现的问题: Calendar 控件的自定义Cell里的内容.我想在每个日期上加一个类似Linkbutton的控件,可是无论怎样做,所有的事件都是无法添加上去的.因为这个控件是动态生成的, ...
最新文章
- python C++ 求逆矩阵库
- ajax校验用户名可用吗,基于jQuery实现Ajax验证用户名是否可用实例
- LeetCode Range Addition II
- Error: ENOSPC: System limit for number of file watchers reached, watch'所在文件路径'
- java的两种运行方式Applet和Application你真的懂吗
- 六、Analysis of quicksort
- 【转】CMake Error: The current CMakeCache.txt directory CMakeCache.txt is different than the directory
- C语言课后习题(30)
- javascript的getElementByTagName
- 小米cc9出厂线刷包_小米cc9 pro刷机教程,线刷升级更新官方系统包
- 华为C语言的编程规范
- 淘客该怎么做,淘客+又是什么
- 【python爬虫自学笔记】-----爬取简书网站首页文章标题与链接
- 海康机器人工业相机sdk简介
- oracle 数据分列,oracle怎么按照范围分列!求高手帮忙.
- 湖南第一师范学校有计算机系吗,湖南第一师范学院有哪些专业及什么专业好
- 织梦dedecmsTAG出现404页面的解决办法
- libxml2的安装和使用
- 北斗再入试题,北京中考物理实验【探究题】占比过半 方格教育
- prism DelegateCommand的使用