C ++の二分探索を使用して、指定された精度までの数の平方根を検索します
正の数nと精度pがあるとします。二分探索法を使用して、小数点以下p桁までの数nの平方根を見つける必要があります。したがって、数値がn =50、p =3の場合、出力は7.071になります。
だからこれを解決するには、いくつかの手順に従う必要があります-
- start:=0およびend:=nを初期化します
- 中間の整数の2乗を比較します。これが数値と等しい場合は、整数部分が検出されます。それ以外の場合は、必要に応じて左または右を探します。
- 積分部分のタスクが完了したら、小数部分のタスクを実行します。
- インクリメント変数を0.1として初期化し、p桁までの小数部を計算します。反復ごとに、増分は前の値の1/10に変更されます。
- 最後に答えを返します。
例
#include<iostream>
using namespace std;
float sqrtBinarySearch(int num, int p) {
int left = 0, right = num;
int mid;
float res;
while (left <= right) {
mid = (left + right) / 2;
if (mid * mid == num) {
res = mid;
break;
}
if (mid * mid < num) {
left = mid + 1;
res = mid;
} else {
right = mid - 1;
}
}
float incr = 0.1;
for (int i = 0; i < p; i++) {
while (res * res <= num) {
res += incr;
}
res -= incr;
incr /= 10;
}
return res;
}
int main() {
int n = 50, p = 3;
cout << "Square root of " << n << " up to precision " << p << " is: " << sqrtBinarySearch(50, 3) << endl;
} 出力
Square root of 50 up to precision 3 is: 7.071
-
C++で特定の二分木の左葉ノードの合計を求めます
ルートノードとその左の子と右の子を持つ二分木があるとしましょう。タスクは、親ノードに残されているツリーのリーフノードの合計を見つけることです。 例 入力-1: 出力: 15 説明: 与えられた入力二分木では、すべての左側の葉ノードの合計は9 + 4 + 2 =15です。したがって、出力は15です。 この問題を解決するためのアプローチ 二分木があり、その親に残されているすべてのリーフノードの合計を見つけることがタスクです。 この問題を解決するための再帰的なアプローチは、ルートノードの左側のノードが空かどうかを確認することです。空の場合は、左側のノードの合計を計算し、右
-
C++のバイナリツリーでルートから特定のノードまでの距離を検索します
ノードが少ない二分木があると考えてください。ルートと別のノードuの間の距離を見つける必要があります。ツリーが次のようになっているとします。 これで、(root、6)=2の間の距離、パスの長さは2、(root、8)=3の間の距離などになります。 この問題を解決するために、再帰的アプローチを使用して、左右のサブツリーでノードを検索し、各レベルの長さも更新します。 例 #include<iostream> using namespace std; class Node { public: int data; &