ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

水壶问题解法和原理解析

2021-11-24 19:58:22  阅读:142  来源: 互联网

标签:r1 r2 水壶 a1 b1 rn 解析 解法


文章目录

问题描述

有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?

如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。

你允许:

  1. 装满任意一个水壶
  2. 清空任意一个水壶
  3. 从一个水壶向另外一个水壶倒水,直到装满或者倒空

题目分析

设现有水量为X,那么水量的变化只有增加或者减少x,增加减少y升水四中变化情况。
因此我们得到公示 mx+ny=z

1.设x和y最大公约数为a,z也一定是a的倍数
那么 x=k1倍的a,y=k2倍的a
mx+ny
=k1 * m * a+k2 * n * a
=(k1 * m + k2 * n) * a
=z
所以z一定也是a的倍数

2.那z是a的倍数就一定对吗
凭直觉是对的
具体物理证明方法如下:
⑴若b=0,则(a,b)=a.这时定理显然成立。
⑵若a,b不等于0.
记d = (a, b), 对ax + by = d,两边同时除以d,可得(a1)x + (b1)y = 1,其中(a1,b1) = 1。
转证(a1)x + (b1)y = 1。由带余除法:
① (a1) = (q1)(b1) + (r1), 其中0 < r1 < b1
② (b1) = (q2)(r1) + (r2), 其中0 < r2 < r1
③ (r1) = (q3)(r2) + (r3), 其中0 < r3 < r2

④ (rn-4) = (qn-2)(rn-3) + (rn-2)
⑤ (rn-3) = (qn-1)(rn-2) + (rn-1)
⑥ (rn-2) = (qn)(rn-1) + (rn)
⑦ (rn-1) = (qn+1)(rn) + 1
故,由⑦和⑥推出(rn-2)An-2 + (rn-1)Bn-1 = 1
再结合⑤推出(rn-3)An-3 + (rn-2)Bn-2 = 1
再结合④推出(rn-4)An-4 + (rn-3)Bn-3 = 1

再结合③推出(r1)A1 + (r2)B2 = 1
再结合②推出(b1)A0 + (r1)B0 = 1
再结合①推出(a1)x + (b1)y = 1
得证。

编写代码

  1. z要小于等于x+y,不然不成立
  2. 找出x,y最大公约数a
  3. r判断z是不是a的倍数
class Solution {
        public boolean canMeasureWater(int x, int y, int z) {
            if (x+y<z) {
                return false;
            }
            //注意x或y等于0的情况
            if (x==0||y==0) {
                return z==0||x+y==z;
            }
            return z%gcd(Math.max(x,y),Math.min(x,y))==0;
        }

        public int gcd(int biger,int smaller){
            if(biger%smaller==0)return smaller;
            return gcd(smaller,biger%smaller);
        }
}

标签:r1,r2,水壶,a1,b1,rn,解析,解法
来源: https://blog.csdn.net/weixin_44153921/article/details/121523464

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有