假设我们有两个容量分别为x和y升的水罐。我们有无限量的水供应。现在,我们需要确定是否可以使用这两个水壶精确地测量z升。如果可以测量z升的水,那么到最后一个桶或两个桶中必须装有z升的水。
我们可以做以下几项操作-
将水罐中的水全部倒满。
清空所有的水罐。
将一个水壶中的水倒入另一个水壶中,直到另一个水壶完全装满,或者第一个水壶本身是空的。
因此,如果x = 2且y = 5且z = 4,则它将返回true。
为了解决这个问题,我们将遵循以下步骤-
如果x + y <z,则返回false
如果x = z或y = z或x + y = z,则返回true
返回true z可被x和y的gcd整除,否则返回false
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h&g; using namespace std; class Solution { public: bool canMeasureWater(int x, int y, int z) { if(x + y < z) return false; if(x == z || y == z || x + y == z) return true; return z % __gcd(x, y) == 0; } }; main(){ Solution ob; cout << (ob.canMeasureWater(3,5,4)); }
3 5 4
输出结果
1