365. 水壶问题(裴蜀定理)
// 裴蜀定理
// ax+by=zax+by=z 有解当且仅当 zz 是 x, yx,y 的最大公约数的倍数。
// 因此我们只需要找到 x, yx,y 的最大公约数并判断 zz 是否是它的倍数即可。
class Solution {
public boolean canMeasureWater(int x, int y, int z) {
if (x + y < z) {
return false;
}
if (x == 0 || y == 0) {
return z == 0 || x + y == z;
}
return z % gcd(x, y) == 0;
}
public int gcd(int x, int y) {
int remainder = x % y;
while (remainder != 0) {
x = y;
y = remainder;
remainder = x % y;
}
return y;
}
}