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));
}

输入项

3
5
4

输出结果

1