n个容器取油问题再探
在 韩信分油问题的拓展分析 里,最后给出了一般性的结论,即:
用 n (n > 1) 个不规则无刻度的容器从一个无穷大的油桶里取油,这些容器容量都为整数升,分别记为 a1, a2, ..., an ,且满足(a1, a2, ..., an) = 1。则所能取得的整数升油量为0到s范围内的全体整数,s = a1+a2+...+an。
为了证明这个一般性结论,给出了一个未能证明的引理,即:
引理 若n个正整数满足 (a1, a2, ..., an) = 1,并记 s为这n个数的和,则有 min{ (a1, s), (a2, s), ..., (an, s) } = 1。
昨天晚上和葛永超、walls老师进一步探讨了一下。永超首先找到了一个 n=4 的反例:2, 3, 4, 9。
2+3+4+9 = 18, (2, 18) = 2, (3, 18) = 3, (4, 18) = 2, (9, 18)= 9,确实是反例,因此上述“引理”被证伪。
随后,我想到把这个被证伪的“引理”的结论稍作弱化处理,得到如下调整的引理:
引理 若n (n > 1) 个正整数满足 (a1, a2, ..., an) = 1,把这 n 个数分成两组,则至少存在一种分法,使得每组数的和,分别记为 s1 和 s2,满足 (s1, s2) = 1。
这样 2, 3, 4, 9 就不是反例了,因为 (2+3, 4+9) = 1。若这个引理成立,一样可以由这个引理把容器数 n > 2 的取油问题等价为容器数 n = 2 的取油问题。
我指出若能找出三个数的反例,这个调整后的引理也就不成立;和walls老师确认这个弱化后的结论证明起来依然很困难后就休息了。
今早一起来,看到了永超提供的三个数的反例:6, 15, 49。
6+15+49 = 70,(6, 70) = 2, (15, 70) = 5, (49, 70) = 7,的确是三个数的反例,调整后的“引理”也被证伪。
琢磨了一下这个反例的构造规律,发现其中有一组基础数:2, 5, 7,满足两个较小的数之和等于较大的数(即 2+5=7),这三个基础数的最小公倍数为2·5·7=70;据此要构造反例的三个数分别记为 a, b, c,令 c = 7·7,并令 a+b+c = 2·5·7,于是 a+b = (2·5 - 7)·7 = 3·7,令 a = 2·3 及 b = 5·3,就得到了 6, 15, 49 这一组反例。
同样,选 2, 7, 9为基础数,可以得到另一组反例:10, 35, 81。事实上,只要选2作为基础数,再选两个相邻的奇数为基础数,按上述方法一般都可以构造出一组三个数的反例(唯一的例外是2, 1, 3这一组基础数)。以 2, 3, 5 为基础数,可得最小的一组三个数的反例 2,3, 25。
也可以使用2以外的偶数作基础数,比如由 3, 4, 7 得到的反例是 15, 20, 49。
再来考虑多于三个数的反例,比如在三个数的反例 15, 20, 49 基础上,添加一个数,能否构造出四个数的反例。
15 = 3*5, 20 = 2*2*5, 49 = 7*7
又由于 15+20+49 = 84 = 2*2*3*7
所以可以构造第四个数为 2*3*7 = 42
这样就得到了4个数15, 20, 42, 49。这4个数的和为126,4个数中任意一个数和126都不互素,且
由 (42+15, 126) = 3, (42+20, 126) = 2, (42+49, 126) = 7,可知 15, 20, 42, 49 这一组数构成了一组4个数的反例。
易知更多个数的反例只需补充上相应数量的42或42的任意倍数即可。至此可知,上面所谓的“引理”已经没有可以调整的余地和价值。这也说明上面的n个容器取油的一般性结论,如果成立的话,还需另辟蹊径证明。
对于n个容器取油的一般性结论,我依然不能证明或证伪。以下仅就上述几个反例的情形做一些具体的探索。
先看 n = 3 的情形,假设三个容器的容量分别为 6, 15, 49 升,由上面的分析已经知道这三个容器不能分成两组,使得各组的复合容量数互素,即无法等价成 n = 2 的情形。但由 (15, 49) = 1 可知由容量分别为 15 和 49 升的两个容器取得的整数升油数为 0 到 15+49 = 64 之间的全体整数。而 6+15+49 = 70,三个容器都装满可取得70升油,因此只需列举出65 到 69 升油也都可以用三个容量分别为6, 15, 49 升的容器取得,0 到 70 之间的全体整数升油便都能取得。
由 (15, 49) = 1,用49升和15升的容器可以倒腾出 1 升的油量,用6升的容器盛放这1升油,并把15升和49升的容器倒满油,于是就得到了 1+15+49 = 65 升油;
同样地,由 (15, 49) = 1,用49升和15升的容器可以倒腾出 2 升的油量,用6升的容器盛放倒腾出的2升油,并把15升和49升的容器倒满油,于是就得到了 2+15+49 = 66 升油;
用49升和15升的容器还可以倒腾出 3、4、5 升的油量,用同样的方法,可以依次得到67、68、69升油。
再看一个 n = 4 的情形,假设4个容器的容量分别为 15, 20, 42, 49 升,由上面的分析已经知道这4个容器不能分成两组,使得各组的复合容量数互素,即无法等价成 n = 2 的情形。但由 (20, 49) = 1 可知由容量分别为 20 和 49 升的两个容器取得的整数升油数为 0 到 20+49 = 69 之间的全体整数。而 15+20+42+49 = 126,还需要考察 70到125之间的每个整数是否能取到。
15+42 = 57,于是由 20 升 和 49 升的容器倒腾出的 1 到 56 升的油量可以倒腾到 15 升和 42 升这两个容器里存放,再把 20 升 和 49 升的容器倒满,就能依次取得 69+1=70 到 69+56=125 升油。
以上两个具体例子的考察说明,这两个所谓反例只是上面所谓“引理”的反例,而不是n个容器取油的一般性结论的反例。
n个容器取油问题再探的更多相关文章
- 【再探backbone 02】集合-Collection
前言 昨天我们一起学习了backbone的model,我个人对backbone的熟悉程度提高了,但是也发现一个严重的问题!!! 我平时压根没有用到model这块的东西,事实上我只用到了view,所以昨 ...
- c++再探string之eager-copy、COW和SSO方案
在牛客网上看到一题字符串拷贝相关的题目,深入挖掘了下才发现原来C++中string的实现还是有好几种优化方法的. 原始题目是这样的: 关于代码输出正确的结果是()(Linux g++ 环境下编译运行) ...
- 再探jQuery
再探jQuery 前言:在使用jQuery的时候发现一些知识点记得并不牢固,因此希望通过总结知识点加深对jQuery的应用,也希望和各位博友共同分享. jQuery是一个JavaScript库,它极大 ...
- 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT)
再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Blueste ...
- LWIP再探----内存堆管理
LWIP的内存管理主要三种:内存池Pool,内存堆,和C库方式.三种方式中C库因为是直接从系统堆中分配内存空间且易产生碎片因此,基本不会使用,其他两种是LWIP默认全部采用的方式,也是综合效率和空间的 ...
- ViewPager+Fragment再探:和TAB滑动条一起三者结合
Fragment前篇: <Android Fragment初探:静态Fragment组成Activity> ViewPager前篇: <Android ViewPager初探:让页面 ...
- [老老实实学WCF] 第五篇 再探通信--ClientBase
老老实实学WCF 第五篇 再探通信--ClientBase 在上一篇中,我们抛开了服务引用和元数据交换,在客户端中手动添加了元数据代码,并利用通道工厂ChannelFactory<>类创 ...
- Spark Streaming揭秘 Day7 再探Job Scheduler
Spark Streaming揭秘 Day7 再探Job Scheduler 今天,我们对Job Scheduler再进一步深入一下,对一些更加细节的源码进行分析. Job Scheduler启动 在 ...
- 再探ASP.NET 5(转载)
就在最近一段时间,微软又有大动作了,在IDE方面除了给我们发布了Viausl Studio 2013 社区版还发布了全新的Visual Studio 2015 Preview. Visual Stud ...
随机推荐
- P3643 [APIO2016]划艇
P3643 [APIO2016]划艇 题意 一个合法序列可表示为一个长度为 \(n\) 的序列,其中第 \(i\) 个数可以为 0 或 \([l_i,r_i]\) 中一个整数,且满足所有不为零的数组成 ...
- 自动化测试(1)selenium+python+chrome 连接测试
环境准备: python版本:3.8.4 开发工具:pycharm 使用chrome和对应的webdriver http://npm.taobao.org/mirrors/chromedriver/ ...
- Docker简易安装教程
Docker介绍 Docker 是一种开源容器化技术,用于构建和容器化应用程序.Docker 使用客户端-服务器架构.Docker客户端与 Docker守护进程对话,后者负责构建.运行和分发 Dock ...
- 旧VC项目dpiAware支持
起因 工作原因,需要维护一款VS2008 SP1开发的MFC项目, 发现WIN10高分辨率下显示模糊,不考虑升级VC版本情况下尝试解决 尝试 新版本VC中Manifest Tool>Input ...
- ThinkPHP5 SQL注入漏洞 && 敏感信息泄露
访问看到用户名被显示了 http://192.168.49.2/index.php?ids[]=1&ids[]=2 访问http://your-ip/index.php?ids[0,updat ...
- bugku-misc 9-16
宽带信息泄露 拿到一个bin后缀的文件,知道是一个二进制文件,但是题目提到的和宽带有关,flag就是用户名.可以使用RoutePassView这个工具,使用的时候记得关闭杀毒软件. 工具可以在这里下载 ...
- 将MNIST手写数据集转换成图片保存到本地
# 加载图片 data = tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) = data.load_data() plt.im ...
- 【笔记】求数据前n个主成分以及对高维数据映射为低维数据
求数据前n个主成分并进行高维数据映射为低维数据的操作 求数据前n个主成分 先前的将多个样本映射到一个轴上以求使其降维的操作,其中的样本点本身是二维的样本点,将其映射到新的轴上以后,还不是一维的数据,对 ...
- DVWA靶场之XSS(Stored)通关
Low: <?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_POST[ 'mtxMessage ...
- NOIP 模拟 6 大佬
这道题是一道数学期望,考场上想的是,每相邻 \(k\) 天之间有 \(k-1\) 天是重合的,所以每两端之间肯定是有影响的. 结果啪啪打脸 这道题其实不用考虑每两段之间的影响,因为在上一段的每种排法, ...