[LeetCode]365. Water and Jug Problem

    xiaoxiao2021-03-25  58

    https://leetcode.com/problems/water-and-jug-problem/#/description

    给两个杯子容量分别是x和y,判断能否量出容量z

    假设最终体积z = m * x + n * y(m与n为整数,可以为0或者为负) 令x = p * gcd, y = q * gcd,可知p与q互质。 则z = (m * p + n * q) * gcd 可以证明一定存在m, n,使得m * p + n * q = 1(p与q互质的性质,参见:裴蜀定理) 由此可知z一定是gcd的整数倍

    public class Solution { public boolean canMeasureWater(int x, int y, int z) { if (x + y < z) { return false; } if (x == z || y == z || x + y == z) { return true; } return z % gcd(x, y) == 0; }   private int gcd(int a, int b) {      if (a == 0) {         return b;      }      return gcd(b % a, a);   } }

    转载请注明原文地址: https://ju.6miu.com/read-40239.html

    最新回复(0)