首页 文章资讯内容详情

C ++中的水罐问题

2026-06-04 1 花语

假设我们有两个容量分别为x和y升的水罐。我们有无限量的水供应。现在,我们需要确定是否可以使用这两个水壶精确地测量z升。如果可以测量z升的水,那么到最后一个桶或两个桶中必须装有z升的水。

我们可以做以下几项操作-

将水罐中的水全部倒满。

清空所有的水罐。

将一个水壶中的水倒入另一个水壶中,直到另一个水壶完全装满,或者第一个水壶本身是空的。

因此,如果x=2且y=5且z=4,则它将返回true。

为了解决这个问题,我们将遵循以下步骤-

如果x+y<z,则返回false

如果x=z或y=z或x+y=z,则返回true

返回truez可被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)); }

输入项

3 5 4

输出结果

1