三个瓶子分酒c语言源码,泊松分酒原理 - 我类个擦的个人空间 - OSCHINA - 中文开源技术交流社区...
有一个12品脱(pint)的酒瓶,里面装满葡萄酒,另有8品脱和5品脱的瓶子各一个。问如何从中分出6品脱的酒出来?
传说泊松年轻时成功解决了该问题,勾起了他对数学的兴趣而投身数学研究,因此该问题被称为泊松分酒问题。另外这个问题又被称为分油问题啦,分水问题啦等等。
小学的时候在一本《十万个问什么——数学卷》中看到过这个问题,那本书直接给出了一个解答过程,又没说原理,看得我糊里糊涂。
一 . 解答过程
为了方便说明,将容量为12品脱,8品脱,5品脱瓶子分别称为大瓶子,中瓶子,小瓶子。按照下面2种规则中的如何一种可以解决这个问题:
第一套规则:
1. 大瓶子只能倒入中瓶子
2. 中瓶子只能倒入小瓶子
3. 小瓶子只能倒入大瓶子
4. 小瓶子只有在已经装满的情况下才能倒入大瓶子
5. 若小瓶子被倒空,则无论中瓶子是否满,应马上从中瓶子倒入小瓶子
之所以要规定倒酒的顺序是为了防止状态重复。而根据这5条规则,大瓶子每次倒入中瓶子的酒总是8品脱,小瓶子每次倒入大瓶子的酒总是5品脱。(请结合下面的表来理解这句话,理解这点很重要)
有了上面的规定后,倒酒的顺序就确定下来了:
12品脱瓶子
8品脱瓶子
5品脱瓶子
12
0
0
初始状态
4
8(倒进)
0
4
3
5(倒出)
9
3
0
9
0
3
1
8(倒进)
3
1
6
5(倒出)
搞到6品脱了
6
6
0
完成
第二套规则:
1. 大瓶子只能倒入小瓶子
2. 小瓶子只能倒入中瓶子
3. 中瓶子只能倒入大瓶子
4. 中瓶子只有在已经装满的情况下才能倒入大瓶子
5. 若中瓶子被倒空,则无论小瓶子是否满,应马上将小瓶子倒入中瓶子
其实只是将第一套规则中的“中”和“小”两个字对换了一下。
根据这个规则确定的倒酒的顺序如下(注意,我将8品脱和5品脱的位置交换了一下):
12品脱瓶子
5品脱瓶子
8品脱瓶子
12
0
0
7
5(倒进)
0
7
0
5
2
5(倒进)
5
2
2
8(倒出)
10
2
0
10
2
2
5
5(倒进)
2
5
0
7
0
5(倒进)
7
0
4
8(倒出)
8
4
0
8
0
4
3
5(倒进)
4
3
1
8(倒出)
11
1
0
11
0
1
6
5(倒进)
1
搞到6品脱了
6
0
6
完成
好了试试用这两种规则之一解决如下分酒问题吧:
大瓶子容量10,中瓶子容量7,小瓶子容量3,要分出来5
二. 原理
设大,中,小三个瓶子容量分别是C1,C2,C3,需要倒出的容量是R
则实际上要是我们能将容量为R的酒倒到中瓶子和小瓶子中就可以啦(有点废话)
设大瓶子倒满中瓶子X次,从小瓶子中倒入大瓶子Y次。
那么显然由大瓶子累次倒入中瓶子和小瓶子总共C2*X的酒。而由小瓶子倒入大瓶子一共有C3*Y的酒。
那么最终,小瓶子和中瓶子剩余的酒显然就是 C2*X - C3*Y
因此,泊松分酒问题实质上转化为下面的不定方程是否有正整数解的问题:
C2*X - C3*Y = R
对于我们的问题,
C1=12,C2=8,C3=5,R=6
第一种倒酒规则实质上相当于解下面这个不定方程:
8X - 5Y = 6 ( 限定 X > 0 ,Y > 0 )
最小整数解是 X=2,Y= 2
表示倒满8品脱的瓶子2次,5品脱的瓶子倒空2次
那么8品脱的瓶子和5品脱的瓶子剩酒总量必然是 8 * 2 – 5 * 2 = 6
第二种倒酒规则实质上相当于解下面的不定方程:
5X - 8Y = 6 ( 限定 X > 0 , Y > 0 )
最小整数解是 X = 6 ,Y= 3
表示倒进5品脱瓶子6次,从8品脱瓶子中倒出3次
那么最终5品脱和8品脱的瓶子剩酒总量必然是 5 * 6 – 8 * 3 = 6
好了,现在你明白为什么要规定倒酒的顺序了吧。小瓶子和中瓶子是一个系统,而大瓶子又是另外一个系统,大瓶子的酒只能倒入中瓶子和小瓶子组成的系统,小瓶子的酒只能倒出到大瓶子的系统。我们关注的是由中瓶子和小瓶子组成的系统,这个系统每次增加都是8品脱(中瓶子容量),每次减少都是5品脱(小瓶子容量)。
另外,如果存在X和Y,使得下面的方程有解:
C2*X - C3*Y = 1
实质上就是说能够倒出1品脱的酒,那么任意品脱的酒都能倒出了。
因为:
(C2*X - C3*Y)*N = N
三个瓶子分酒c语言源码,泊松分酒原理 - 我类个擦的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐
- 泊松分酒 java课件_泊松分酒原理 - 我类个擦的个人空间 - OSCHINA - 中文开源技术交流社区...
有一个12品脱(pint)的酒瓶,里面装满葡萄酒,另有8品脱和5品脱的瓶子各一个.问如何从中分出6品脱的酒出来? 传说泊松年轻时成功解决了该问题,勾起了他对数学的兴趣而投身数学研究,因此该问题被称为泊 ...
- 在C语言中数据耦合例子,耦合性 内聚加实例 - osc_yip56055的个人空间 - OSCHINA - 中文开源技术交流社区...
基本信息 耦合性(或称"耦合度") 英文 : coupling 耦合性也叫块间联系.指软件系统结构中各模块间相互联系紧密程度的一种度量.模块之间联系越紧密,其耦合性就越强,模块之间 ...
- qt调用c语言编写的dll文件,Qt之调用外部DLL - moki_oschina的个人空间 - OSCHINA - 中文开源技术交流社区...
预备知识: 1.如果在没有导入库文件(.lib),而只有头文件(.h)与动态链接库(.dll)时,我们才需要显示调用,如果这三个文件都全的话,我们就可以使用简单方便的隐式调用. 2.通常Windows ...
- c语言输出法雷序列,法雷(法里)序列 - osc_h0wb1wlt的个人空间 - OSCHINA - 中文开源技术交流社区...
定义: 对任意给定的一个自然数n,将分母小于等于n的不可约的真分数按升序排列,并且在第一个分数之前加上0/1,在最后一个分数之后加上1/1,这个序列称为n级法雷数列,即法雷数列是0和1之间最简分数升序 ...
- 仿射解密c语言程序实验报告,仿射加密解密 - 依姆哣特的个人空间 - OSCHINA - 中文开源技术交流社区...
//功能:仿射加密 密钥:[3][5][9][11][15][17][19][21][23]有逆元的数 例子:pku c=7,d=3 输出 :EVN 编辑环境:vc++6.0 include in ...
- 蓝桥杯泊松分酒java_蓝桥杯-泊松分酒 - steven_wjg的个人空间 - OSCHINA - 中文开源技术交流社区...
泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多.有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布. 有一次闲暇时,他提出过一个有趣的问题,后称为:"泊松分酒& ...
- c语言平时作业完成的评价,C语言作业评价标准 - osc_fmg49rzg的个人空间 - OSCHINA - 中文开源技术交流社区...
C语言作业评价标准 作业内容: 每周作业分为基础作业.挑战作业和预习作业: 基础作业为本周所学内容的巩固: 挑战作业包括但不仅限于所学知识的综合运用: 预习作业为下周所学内容的任务单,要求必须在课前完 ...
- android宿舍管理系统源码,校园宿舍管理系统 - ATB的个人空间 - OSCHINA - 中文开源技术交流社区...
本实例为一个校园宿舍管理系统, 系统用户分为三个角色,系统管理员 , 楼宇管理员, 学生, 系统管理员可以应用对楼宇管理员的管理工作(增删改查), 学生的管理(增删改查), 楼宇管理(增删改查), 学 ...
- 双线性插值算法c 语言实现,双线性插值 - CristianoC的个人空间 - OSCHINA - 中文开源技术交流社区...
前言 最近在学习LBP,其中的圆形LBP特征由于计算的值可能不是整数,即计算出来的点不在图像上,我们要使用计算出来的点的插值点.目的的插值方法有很多,Opencv使用的是双线性插值,今天就来介绍一下双 ...
最新文章
- 运维中的MySQL数据库管理方式
- tomcat及负载均衡
- java null转换jason_Java进阶知识,轻松理解Java泛型
- Redis高可用方案-哨兵模式-SpringBoot整合
- C# XML 添加,修改,删除Xml节点
- 蓝桥杯2015初赛-星系炸弹-日期计算
- 微软宣布已获批:重新向华为出口软件!
- Javascript 数组循环遍历之forEach
- [图解]管理九段的新排列
- Ubuntu下Arm-Linux-GCC交叉编译环境的搭建
- et文件怎么转成excel_怎么将pdf转成excel?一定要学会这个PDF转Excel方法
- LINUX下载编译FreeType
- 在Linux系统编译DCMTK的源码得到其动态库文件和可执行程序
- ETL设计详解(数据抽取、清洗与转换)
- NLTK文本分割器是如何工作的
- 系统集成项目管理工程师知识点总结(错题记录)
- nginx 配置之 proxy_pass参数详解
- 使用Adobe illustrator (AI)快速制作图标
- 如何修改android手机电池容量显示信息
- 独立开发者+开源项目,超级个体的价值模式
热门文章
- java获取项目中的路径_java中几种获取项目路径方式
- 和真正的程序员在一起是怎样的体验【转载】
- 别再逼三星了,它在起死回生的路上挣扎很久了
- 肠道微生物群可以导致自闭、多动、焦虑和抑郁
- 记录-安装cuda与cudnn 及对应版本的tensorflow|pytorch
- 【前端圭臬】一:写给入坑前端的你
- mysql数据库修改信息语句_mysql数据库的增删改语句
- coreldraw铺花纹_CorelDRAW简单绘制漂亮的花纹边框技巧介绍
- gm不重启服务器修改物品爆率,(搬运) 修改任务物品爆率方法
- 分布式事务之Seata TCC