猜数字游戏python123_【趣味数学】可以说谎的猜数字游戏

又是一年找工作的高峰期,各种各样千奇百怪的智力题也在考验着学子们的智商,其中有些题目更是让人脑细胞大量死亡。。。近来有同学问一道,带有说谎的猜数字游戏,问“元芳,这事你怎么看?”,我这想一口盐汽水喷死他。好了,言归正传。

问题描述:

A,B两名玩家首先约定正整数N,然后A在心里想一个正整数x,其中x在1和N之间,B通过提问来猜出A心中所想的数字x。B提问的格式只有一种:先列出一些数字,然后问“x”是否在这些数字中(当然B也可问:x是否在某个区间内),B可以提问任意多次,A可回答“是”或者“否”。A可以偶尔撒谎的,但是A不能连续两次撒谎。问:B是否可以通过询问得到A心中的所想的数字,或者给出一个集合保证A所想数字x必定落在次区间内,如果能请给出策略;如果不能请说明理由。

问题解答:

乍一看这个问题确实比较棘手,不知道从何开始,再次情况下,先求解简单的特殊情况,然后逐步归纳得到一般地结论,是一个不错的选择。因而我们可以从最简单的情况考虑,假设N=2,那么A所想的数字要么是1要么2.这种情况下如何呢?

由于A不可能连续说谎,所以如果对于同一个问题连续问两次,A两次给出相同的答案,那么我们是可以猜出答案的。比如:B连续两次提问“x=2吗?”,A如果给出答案“是是”,那么A两次必然都说真话,所以x=2;如果A回答“否否”,那么两次“否”也是真话,因而断定x不等于2,x=1。

然而A给出不能的答案,B连续两次提问”x=2吗?“,A回答“是否”,我们只能断定有一次说了假话,不能断定哪一次说了假话,因而得不到任何有用的信息。在此基础上,如果再问“x=1吗?”,A可以根据上次说真话还是假话来给出回答,如果上次说的假话,那么只要保证这次说的是真话就可以了,但是我们并不知道他是否正在说真话,因而还是得不到有用的信息;如果上次说的真话,那么这次真话假话都可以,就可以随便答,如果继续逼问”x=1吗?“,A上次说”是“,这次就说”否“,上次说”否“,这次就说”是“,我们是无论如何都不可能知道他什么时候在撒谎的。因而如果只有两个值,那么B是不可能通过提问来猜出x的。

上面的过程可以通过下面这个简单的例子看出,假设x=2。

(1)”x=2吗?“  ”是“  ”x=2吗?“  "否"  ”x=2吗?“  ”是“。。。(交替回答即可)。。。。”x=1吗?“  ”是/否“(上次说真话,这次随便) ”x=1吗?“  ”否/是“

(2)"x=2吗?"   "否"   ”x=2吗?“  ”是“  ”x=2吗?“  ”否“。。。。(交替回答即可)。。。”x=1吗?“  ”否“(上次说假,这次必须说真)  ”x=1吗?“  ”是“

因为1和2是称的,如果接着问”x=2吗?“,只需要把上述(1)(2)中回答1和2的策略交换即可。

----------------------------------------------------------------------------我是分割线---------------------------------------------------------------------

N=2是不能断定的,那么N=3情况会是怎么样的呢?A只能想123中的某一个数。同样根据A不能连续说谎两次,我们可以对一个问题重复问2次以上,如果A的回答是相同的,那么必然是可以得到信息的。

例如连续问”x=3吗?“,A的回答方式只可能是”是是“ ”否否“”是否“”否是“这四种情况。

(1)如果A回答”是是“,立刻断定两次都为真话,因而x=3.

(2)如果A回答”否否“,立刻断定两次都为真话,因而x不等于3,可排除3.

(3)如果A回答”否是“,继续问”x=2吗?”  A只能回答“是/否”,分情况讨论:(3a)如果A回答“是”。也就是“x=3吗?”“是”“x=2吗?”“是”。由于两者中至少有一真,有不可能都是真(x不能即等于2也等于3),所以两者中必有一真一假。这样可以得出x要么等于2要么等于3,因而可以排除1。(3b)如果A回答是“否”,也就是“x=3吗?”“是”“x=2吗?”“否”。这时如果x=2,那么可以得出他两次都说假话。因而可以得出x不等于2,即可以排除2.

(4)如果A回答“是否”,继续问“x=3吗?”,如果回答“否”,按情况(2)处理,如果回答“是”,按情况(3)处理。

因而通过上面的提问策略我们总是可以排除其中的一个数,在大多数情况下不能得到更多的信息,除了情况(1)可直接得到答案。

----------------------------------------------------------------------------我是分割线-------------------------------------------------------------------------

现在我们开始考虑原始问题,如果N比较大怎么办呢?我们可以把N分成三等分(不一定要求相等,尽量即可),这样把上面的策略中的123,换成集合123即可,比如“x在第三个集合中吗?”,这样的话,我们每次可以淘汰1/3的所有数字,直到最终剩下两个数字,就归结为第一个小问题,不可能得到确定的某一个数字。

本来讨论到这里已经结束了,但是有同学说,其实这个问题Matrix67已经有讨论过,并且还有更一般的结论,有兴趣的同学请点击这里。

博主python27对本博客文章享有版权,转载请注明出处,对解题思路有任何建议,欢迎在评论中告知。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513407.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

异步编程到底在说啥?

作者 | 码农的荒岛求生来源 | 码农的荒岛求生之前很多同学在微信上问能不能讲讲异步编程是怎么一回事儿,今天就和大家简单聊一聊这个话题。我们以函数调用为例,假设有这样的代码:void B() {lines read(filename);sum(lines); }void A() {...…

如何让评审人爱上我

简介: 今天小编作为一个开发者,放下外部的客观因素,仅从一个代码的实现者,一个被评审人的角度去思考如何让评审变得高效而富有意义。换句话说:如何让评审人爱上我(被评审人)。 众所周知&#x…

centos8安装mysql_CentOS8+FreeRadius+Mysql8.0+daloRadius建立Radius服务器

Linux发行版:CentOS8-1905数据库:Mysql8.0create WEB软件:httpddaloRadius前端使用PHPyum -y install update yum -y install httpd //web服务器 yum -y install vim // yun -y install wget // yum -y install net-to…

2025年公有云或将服务中国过半数字经济

简介: 2025年公有云或将服务中国过半数字经济阿里云研究院 高级战略总监 麻芃2020年,疫情“黑天鹅”对全球经济社会运行造成剧烈冲击,但数字经济的引擎作用却逆势凸显。去年我国数字经济整体规模达到39.2万亿元,实现9.7%的高速增长…

php mysql 绕过_PHP中md5绕过

一、md5($password,true)的SQL注入问题这里要提到一下MySQL中的数值比较问题。1、当数字和字符串比较时,若字符串的数字部分(需要从头开始)和数字是相同的,那么则返回的是true。select if(1"1abcd","等于","不等于") as t…

重磅发布:微服务引擎 MSE 专业版

简介: 性能提升 10 倍,更高的 SLA 保障,新用户限时抢购 8 折资源包。 微服务引擎 MSE 专业版发布,支持 Nacos 2.0 ,相比基础版,专业版具有更高的 SLA 保障,性能提升十倍,99.95%可用…

45分钟,411个中小品牌天猫双11实现新跨越

CSDN从天猫获悉,今年天猫双11,有一批中小品牌实现跨越式增长。截至11月11日0点45分,已有411个去年成交额过百万的中小品牌,今年销售额突破千万;更有40个去年双11成交额千万级的品牌,在今年双11成交额突破了…

python封装c接口_用C为python3.1封装mysql接口(一)

/*main.cpp 指定编译为C代码,工程设置为dll,编译后得到的模块名.dll 修改为模块名.pyd*/#include#includestructmy_sqldata{MYSQL mysql_conn;//用于连接mysql的MYSQL_RES *mysql_result;//查询后的结果MYSQL_ROW curren_row; //当前行unsignedint num_r…

组装台式电脑配置清单_攒机必备!各种价位的台式电脑配置清单!

点击上方「软件分享云」关注我们台式机,是一种独立相分离的计算机,完完全全跟其它部件无联系,相对于笔记本和上网本体积较大,主机、显示器等设备一般都是相对独立的,一般需要放置在电脑桌或者专门的工作台上。因此命名…

python nonetype报错_python 查询数据库数据 NoneType报错

python调试mysql数据库时,在测试单条查询语句的时候是没有问题的。执行过程如下:1、由连接对象conn获取到一个cursor。 cur conn.cursor()2、执行sql语句。 count cur.execute(sql)3、读取数据。 result cur.fetchone() #获取一条4、关闭游标、连接。…

达摩院重要科技突破!空天数据库引擎Ganos解读

简介: Ganos空天数据库引擎是李飞飞带领的达摩院数据库与存储实验室研发的新一代位置智能引擎,采用了平台即服务、多模融合、计算下推和云原生全新处理架构,为政府、企事业单位、泛互联网客户提供移动对象、空间/时空、遥感多模态数据混合存储…

brainfuck 在线_酒店在线声誉持久战 重视社媒舆论 保持品牌一致性

维护品牌或酒店声誉是一场持久战,这对塑造积极的品牌认知和提升客户满意度至关重要。声誉管理包括两个关键部分:引导客人评价和公众舆论,并以适当的方式进行反馈。就在线声誉管理而言,品牌还需要注意另外一点,公众会在…

2021天猫双11:阿里巴巴业务已全部跑在阿里云上

“今年天猫双11是首个100%的云上双11,成功扛住了全球规模最大的流量洪峰。”11月11日,阿里巴巴首席技术官程立表示,阿里巴巴业务已全部跑在阿里云上,体验如丝般顺滑。经过历年双11的“大考”,阿里技术实现了多级跳跃。…

python3怎么定义long_python3 整数类型PyLongObject 和PyObject源码分析

python3 整数类型PyLongObject 和PyObject源码分析一 测试环境介绍和准备测试环境:操作系统:windows10Python版本:3.7.0 下载地址VS版本:vs2015社区版(免费) 下载地址win10SDK(安装vs2015是可以选择,如果没有安装则需要…

从“嵌入式”到“物联网”有哪些变化?

简介: 经过几十年发展,嵌入式技术已经用在了我们生活中的方方面面,但是嵌入式始终都带有小众,专业性强的属性,让很多非嵌入式领域的同学望而却步。近十几年的发展,物联网覆盖了越来越多领域,包括…

java 接口 详解_Java 接口详解

接口接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程…

Serverless Devs 的官网是如何通过 Serverless Devs 部署的

简介: 只有自己吃自己的狗粮,自己做的东西才不“🐶”。Serverless Devs 自发展之处到现在,已经经历了几个月的时间,在这几个月,Serverless Devs 的成长是迅速的,这很大一部分的原因是“我们在吃…

crontab 改成只读模式_以“三合一”模式推动提质增效 助力公司高质量发展

近日,模块制造厂圆满完成位于原化机西部院内的吉林制造基地新老厂区的资源整合、机械设备修理以及厂区内设备土建基础施工、功能配套设备购置等工作,积极推进新厂区环评、厂区注册地址变更,使制造基地继承了老厂区所拥有的压力容器、超限设备…

5G 落地进入爆发期,是时候让毫米波登场了

作者 | 小枣君来源 | 鲜枣课堂2021年,全球5G网络建设和发展取得了不俗的成绩。根据GSA于8月发布的数据,已有70多个国家及地区的超过175家运营商,推出了5G商用服务。还有285家运营商,正在投资部署5G。中国的5G建设步伐,…

新型DDoS来袭 | 基于STUN协议的DDoS反射攻击分析

简介: 作为新型反射类型,目前仍存绕过防御可能性。 阿里云安全近期发现利用STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)服务发起的DDoS反射攻击。阿里云DDoS防护系统在秒级识别到攻击&#xff0c…