leetcode-365

谁说我不能喝 提交于 2020-03-22 00:29:12

 一般思维这个题可能会想到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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!