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

C++でa^bに最も近いxの倍数を見つけます


a、b、xの3つの整数があるとします。タスクは、abに最も近いxの倍数を取得することです。したがって、a =5、b =4、x =3の場合、出力は624になります。54=625であり、624は3の倍数であり、625に最も近いです。

タスクは簡単です。この問題を解決するには、次の手順に従う必要があります-

  • numを計算する:=a b
  • 次に、f:=(num / x)のフロアを見つけます
  • これで、左側の最も近い要素はcl =x * fになり、右側の要素はcr =x *(f + 1)になります
  • 最後に、それらの中で最も近い数はmin(num – cl、cr – num)になります

#include <iostream>
#include <cmath>
using namespace std;
long long getClosest(int a, int b, int x) {
   long long num = pow(a, b);
   int f = floor(num / x);
   long long cl = x * f;
   long long cr = x * (f + 1);
   if ((num - cl) < (cr - num))
      return cl;
   else
      return cr;
}
int main() {
   int a = 5, b = 4, x = 3;
   cout << "Find closest element: " << getClosest(a, b, x);
}

出力

Find closest element: 624

  1. C++のバイナリ検索ツリーで最も近い要素を検索します

    1つの二分探索木(BST)と別のターゲット値があるとします。その与えられたBSTで、ターゲットに最も近いk個の値を見つける必要があります。ここで、ターゲット値は浮動小数点数です。 kは常に有効であり、k≤合計ノードであると想定できます。 したがって、入力が次のような場合 target =3.714286、k =2の場合、出力は[4,3]になります。 これを解決するには、次の手順に従います- 関数pushSmaller()を定義します。これにより、ノード、スタックst、およびターゲットが取得されます。 ノードが存在しない場合は、-を実行します ノードの値が<ターゲッ

  2. C++の二分木で最も近い葉を見つけます

    1つの二分木が与えられたとします。さまざまなレベルのリーフノードがあります。ノードを指す別のポインターが与えられます。尖ったノードから最も近いリーフノードまでの距離を見つける必要があります。ツリーが以下のようであると考えてください- ここで、リーフノードは2、-2、および6です。ポインタがノード-5を指している場合、-5から最も近いノードは距離1になります。 これを解決するために、指定されたノードをルートとするサブツリーをトラバースし、サブツリー内で最も近いリーフを見つけて、距離を保存します。ここで、ルートからツリーをトラバースします。ノードxが左側のサブツリーに存在する場合は、右側