leetcode-365

 一般思维这个题可能会想到bfs,但是看了题解发现数学法是很不错的选择,这题要是用bfs其实也有点勉强,我目前的理解是算法是解决简化问题的而不是制造问题的,如果可以用很强的数学公式解决也是有限考虑的。

而贝祖定理告诉我们,ax+by=zax+by=z 有解当且仅当 zz 是 x, yx,y 的最大公约数的倍数。因此我们只需要找到 x, yx,y 的最大公约数并判断 zz 是否是它的倍数即可。

之前好像有个新闻还报道过这个小女孩。

牵扯到数学,还是py好用,go直接拉跨。

class Solution:
    def canMeasureWater(self, x: int, y: int, z: int) -> bool:
        if x + y < z:
            return False
        if x == 0 or y == 0:
            return z == 0 or x + y == z
        return z % math.gcd(x, y) == 0

end

一个没有高级趣味的人。 email:hushui502@gmail.com
原文地址:https://www.cnblogs.com/CherryTab/p/12543522.html