zoukankan      html  css  js  c++  java
  • 两个容积互质的水杯可倒出任意从1到容积和的水量

    即: 两个水杯A、B,容积分别为 x 和 y ,(x,y)=1。则可以通过相互倒水的方法倒出从1到(x+y)的任意自然数体积的水来。(假设睡无限)

    例: x=5,y=3,倒出4升水。

    1. A倒满,B空: A剩5,B剩0
    2. A的水倒满B: A剩2,B剩3
    3. B倒空,A水倒至B:  A剩0,B剩2
    4. A倒满: A剩5,B剩2
    5. A的水倒满B:A剩4,B剩3   

    数学证明:(转自:http://www.guokr.com/question/206848/)

    第一种情况:水是无限量供应的。

    假设现在有这样两个杯子,容积分别是x和y并且互质,那么对于任何整数a和b,下面的同余方程:(用==表示同余的符号)

    z == a (mod x)
    z == b (mod y)

    都有解,这个结论叫做中国剩余定理,而且它的证明是个构造性证明,也就是说证明本身给出了一个解这个方程的办法。

    现在假设x > y,a是需要的水的体积,令b = 0,解这个方程可以得到一个整数z。z除以y余数为0,所以只要用小杯装z/y杯水,然后向大杯中倒,大杯满了就全倒光再接着从小杯中续水,直到把z升水全部用完,大杯中剩下的就是a升水。

    也就是说这类问题总是有解的,但是这个解可能不是最优的(用水最少或者折腾次数最少)。

    第二种情况:水是有限的,比如大杯中一开始有x升,小杯中一开始有y升。

    在这种情况下肯定需要第三个容器,如果这个容器足够大的话应该和第一种情况一样。

    如果第三个容器比较小的话,那就需要更多的讨论了(比小杯还小、比小杯大比大杯小等等)。

  • 相关阅读:
    关于轨道交通的一些知识点和关键词
    关于芯片的一些关键词
    关于ADC采集
    Linux记录
    在VMware运行Linux下,密码错误的原因
    气体传感器
    AD采集问题
    Maven [ERROR] 不再支持源选项 5,请使用 7 或更高版本的解决办法
    Maven 专题(九):后记
    Maven 专题(六):Maven核心概念详解(二)
  • 原文地址:https://www.cnblogs.com/longdouhzt/p/2964350.html
Copyright © 2011-2022 走看看