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

C++で指定された整数に3.5を掛けます


n * 3.5の結果を取得するには (n * 2)+ n +(n / 2)を計算する必要があります 。ビットを1だけ左に移動すると、 n * 2になります。 ビットを右に移動すると、 n / 2 。それらを追加して結果を取得します。

n * 3.5 =(n * 2)+ n +(n / 2)

上記の式を検証するために、nのさまざまな値を送信できます。いくつかの例を見てみましょう。

入力

2
7
10

出力

7
24
35

アルゴリズム

  • 番号nを初期化します。
  • 左シフトビット演算子を使用してn*2を見つけます
  • 右シフトビット演算子を使用してn/2を見つけます。
  • 上記の両方の値をnとともに追加して、結果を取得します。
  • 結果を返します。

上記の手順では簡単な問題です。

実装

以下は、C++での上記のアルゴリズムの実装です

#include <bits/stdc++.h>
using namespace std;
int getTheResult(int x) {
   return (x << 1) + x + (x >> 1);
}
int main() {
   int n = 10;
   cout << getTheResult(n) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

35

  1. C++で指定された条件でグリッドに8つの数字を入力します

    1、2、3、4、5、6、7、8を、指定された図の8つの円に配置するとします。このようにして、シーケンス内で隣接する番号に隣接する番号はありません。 したがって、入力が次のような場合 0 - 1 - 1 0 - 1 - 1 - 1 - 1 0 - 1 - 1 0 その場合、出力は次のようになります これを解決するには、次の手順に従います- N:=3、M:=4 考慮されていません:=-1 関数present_in_grid()を定義します。これには、grid [N] [M]、num、が必要です。

  2. C++で指定された値を持つ葉を削除する

    二分木と整数のターゲットがあるとすると、値のターゲットを持つすべてのリーフノードを削除する必要があります。親ノードがリーフノードになり、値ターゲットを持つ場合、値ターゲットを持つリーフノードを削除すると、それも削除する必要があることに注意する必要があります(できなくなるまでそれを続ける必要があります)。したがって、ツリーが以下のようになり、ターゲットが2の場合、最終的なツリーは最後のツリーのようになります- これを解決するには、次の手順に従います- remLeaf()と呼ばれる再帰メソッドを定義します。これにより、ルートとターゲットが取得されます ルートがnullの場合、n