C ++中的水罐问题
假设我们有两个容量分别为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
范例(C ++)
让我们看下面的实现以更好地理解-
#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));
}
输入项
35
4
输出结果
1
以上是 C ++中的水罐问题 的全部内容, 来源链接: utcz.com/z/322553.html