Leetcode 365. Water and Jug Problem
可以想象有一个无限大的水罐,如果我们有两个杯子x和y,那么原来的问题等价于是否可以通过往里面注入或倒出水从而剩下z。
z =? m*x + n*y
如果等式成立,那么z%gcd(x,y) == 0。
1 class Solution(object): 2 def canMeasureWater(self, x, y, z): 3 """ 4 :type x: int 5 :type y: int 6 :type z: int 7 :rtype: bool 8 """ 9 if z == 0 or (z<= x+y and z%self.gcd(x,y) == 0): 10 return True 11 else: 12 return False 13 14 def gcd(self, x, y): 15 while y != 0: 16 (x, y) = (y, x % y) 17 return x