C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++での水と水差しの問題


容量がxリットルとyリットルの水差しが2つあるとします。私たちが利用できる水の供給は無限です。次に、これら2つの水差しを使用して正確にzリットルを測定できるかどうかを判断する必要があります。 zリットルの水が測定可能である場合、最後までに一方または両方のバケツにzリットルの水が含まれている必要があります。

これらのいくつかの操作を実行できます-

  • 水差しのいずれかを水で完全に満たします。

  • 水差しのいずれかを空にします。

  • もう一方の水差しが完全にいっぱいになるか、最初の水差し自体が空になるまで、一方の水差しから別の水差しに水を注ぎます。

したがって、x=2およびy=5、およびz =4の場合、trueが返されます。

これを解決するには、次の手順に従います-

  • x + y

  • 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

  1. C ++のfmax()およびfmin()

    このセクションでは、C ++でfmax()とfmin()を変換する方法を説明します。 fmax()とfmin()はcmathヘッダーファイルにあります。 この関数は、float型またはdoubleまたはlong doubleの2つの値を取り、それぞれfmax()およびfmin()を使用して最大値または最小値を返します。 floatとdoubleを比較したい場合や、long doubleとfloatを比較したい場合など、引数の型が異なる場合、関数はその値に暗黙的に型キャストし、対応する値を返します。 例 #include <cmath> #include <iomanip&

  2. C ++のdelete()とfree()

    delete() 削除演算子は、メモリの割り当てを解除するために使用されます。ユーザーには、この削除演算子によって作成されたポインター変数の割り当てを解除する権限があります。 C++言語での削除演算子の構文は次のとおりです delete pointer_variable; 割り当てられたメモリのブロックを削除する構文は次のとおりです。 delete[ ] pointer_variable; これは、C++言語での削除演算子の例です 例 #include <iostream> using namespace std; int main () {    in