有趣的天平秤假币问题
问题描述:
有12枚硬币,其中有一枚是假币,但是不知道是重还是轻。现给定一架没有砝码的天枰,问至少需要多少次称量才能找到这枚硬币?如何证明给出的方案是最少次数?
思路分析:
我们首先想到的可能是将12枚硬币分成两堆,每堆6枚放到天枰上称量,这样的得到的结果一定是天枰是倾斜的。得不到任何其他信息,反而白白浪费了一次称量机会。因此第一次称量一定是选择一部分去称量,利用均分原理,天枰左边放一部分硬币,右边放一部分硬币,还剩下一部分硬币。从平均情况考虑,三部分中含有假币的概率是相等的。因此,第一次称量中,我们可以将12枚硬币分成3份,每份4枚硬币,记为甲、乙、丙。
取甲、乙放到天枰上称量,一共会出现3种情况:
- 平衡:说明甲乙中都不会含有假币,则假币一定在丙中,记丙中的4枚硬币为A、B、C、D。(依然不能将4枚硬币分成2份!无意义!!)取A、B放到天枰上称量,则又会出现三种不同情况:
- AB平衡:AB不可能为假币,一定在C、D中。
- 取C与A量,若平衡,说明D是假币;若不平衡,说明C是假币。
- A重/B重:A为假或B为假。取甲中任意一枚(真币)与A称量。若平说明B为假币,且假币轻;若依然A重,说明A为假币且假币重;
- AB平衡:AB不可能为假币,一定在C、D中。
- 左倾:说明假币在甲或乙中。分别记甲中四枚硬币为ABCD,乙中四枚硬币为EFGH,丙中四枚硬币为IJKL(都是真币)。取ABE和CDI称量,则会出现
- 若ABE与CDI平衡,则说明他们都是真币。FGH为假币且假币轻。取FG称量:
- 若平衡,说明H为假币;
- 否则FG中谁轻谁是假币。
- 若左倾(即ABE重,CDI轻)。第一次称时,ABCD>EFGH。所以假币在AB中,且假币重;
- A与I在称量一次,若平则B是假币,若A重,则A是假币。
- 若右倾(即ABE轻,CDI重)。第一次称时,ABCD>EFGH。所以假币在CD中,且假币重;
- C与I再称量一次,若平则D是假币,若C重,则C是假币。
- 若ABE与CDI平衡,则说明他们都是真币。FGH为假币且假币轻。取FG称量:
- 右倾:(与左倾情况完全对称)
通过上面的分析可知,无论什么情况,3次称量就可以得出哪个是假币。
理论分析:
- 一次天枰称量能够得到左倾、右倾、平衡3种情况,如果把一次称量当做是一次编码,则它是3进制编码才能够表示;
- 我们想要用3进制编码表示的是:12枚硬币,且假币的轻重未知。
- 每枚硬币都可能是假币,共12种情况,假币有可能比真币轻,也有可能重,共12*2=24种情况;
- 3n>=24 则n至少为3才可以。
- 所以从信息论的角度讲,3次称量是最小值。
转载于:https://www.cnblogs.com/little-YTMM/p/5455072.html
有趣的天平秤假币问题相关推荐
- Github上有趣的100个python项目
Github上面有很多有趣的python项目,包括软件.库.教程.资源等.这次收集了其中比较受欢迎的100个,供大家参考. 资料来源:https://github.com/521xueweihan/H ...
- 力所能及的做些自己喜欢和有趣的事
我们每个人都有自己喜欢做的事:在自己可控且力所能及的情况下,在闲时,按自己的意愿去做些自己喜欢和有趣的事,会感觉到这事很有意义.在忙时,要为理想和奋斗而忙:不浪费时间在无意义的事和人身上. 朋友要的是 ...
- 10玩rust_有趣的 Rust 类型系统: Trait
也许你已经学习了标准库提供的 String 类型,这是一个 UTF-8 编码的可增长字符串.该类型的结构为: pub struct String {vec: Vec<u8>, } UTF- ...
- 有趣的计算机课的作文,有趣的电脑课作文500字
昨天,我们上了一堂有趣的电脑课. 刚一踏进电脑室,我们便发现讲台旁放着一箱耳机,这些耳机上都缠绕着长长的耳机线.这节课我们会学习什么新知识呢?我怀着好奇心,坐在了座位上. 这时,上课铃响了.老师走到讲 ...
- 人工智能和机器学习领域有哪些有趣的开源项目
人工智能和机器学习领域有哪些有趣的开源项目? 投递人 itwriter 发布于 2014-12-02 11:21 评论(0) 有20人阅读 原文链接 [收藏] « 本文简要介绍了 10 款 ...
- C++拾趣——有趣的操作符重载
操作符重载是C++语言中一个非常有用的特性.它可以让我们比较优雅的简化代码,从而更加方便的编写逻辑. 为什么要使用操作符重载 一种常见的用法是重载<<运算符,让标准输出可以输出自定义的类型 ...
- 简单有趣的matlab小程序_超实用有趣的五个小程序推荐
大家好,我是小胖. 废话不多说,进入正题. 1.一周CP共读 有趣的灵魂总会相遇. 一个极简的社交小程序. 通过选择自己喜欢的一本书,匹配到那个跟自己有着一样有趣灵魂的TA. 选择好要阅读哪本书之后, ...
- 一些有趣的题目(java)持续更新
有趣的编程题 1.面试题 2.某公司面试题 1.面试题 此处为正确的代码 package Java.king01.Test;class MicrosoftTest {public static voi ...
- 比较有趣的一个笔试题目
这2天忙于找工作,看.NET笔试题目的时,发现有些笔试题目还是比较有趣的,虽然考的都是基础,但是稍有不慎还是会进入圈套.以下面一个题目为例,听说是晕倒了一群人 - - class Progra ...
最新文章
- Python学习笔记.OS学习笔记 OS操作系统(operating system)(二)程序和进程 输出进程号,工作目录最有用!
- wmi接口如何通过Win32_Volume类修改盘符
- numpy学习笔记(莫烦python)
- 关于level_idc和Profile_IDC的解释
- 在WebGL场景中进行棋盘操作的实验
- 论文浅尝 | 异构图 Transformer
- tomcat7下配置session复制和nginx做负载均衡
- Unity3D基础36:场景自适应与场景切换
- 一个有情怀的PPT模板下载网站
- 赚了20亿美元GandCrab勒索病毒家族的故事
- Unity 资源断舍离(资源清理重复以及引用被引用查找)
- Linux编程之ICMP洪水攻击
- Crazy Mother
- WiFi_combo模组功耗数据
- vip163邮箱手机版登陆入口是哪个?vip邮箱163实用技巧
- java word转二进制_DWORD WORD到INT的转换
- Snippets 使用
- 如何清除ug服务器注册码,UG许可证删除不掉的解决方法
- 【XLA】一、【构图阶段】图优化器的注册和执行
- 您的代码听起来如何?根据您的代码生成音乐