這道題的關鍵是隻有兩個瓶子,因此每次只能變化x或者y量的水,因此z = ax + by。而z在爲x,y的最大公約數倍數時有解。
class Solution {
public:
bool canMeasureWater(int x, int y, int z) {
if(x + y < z) return false;
if(z == 0) return true;
if(x == 0 || y == 0)
{
if(z == x || z == y) return true;
else return false;
}
return z % gcd(x,y) == 0;
}
};