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

nとのXORがC++でより大きな値を生成する小さな数を数えます


整数が与えられます。たとえば、numが与えられます。タスクは、numよりも小さい数値をカウントすることです。numとのXORは、XOR値よりも大きい値になります。

XOR演算の真理値表を以下に示します

A B A XOR B
0 0 0
1 0 1
0 1 1
1 1 0

入力 − int num =11

出力 − nとのXORがより大きな値を生成する、より小さな数の数は− 4

説明

numは11として与えられます。これは、num未満の数値を持つnumのXORを見つける必要があることを意味します。したがって、数値は1 XOR 11 <11(FALSE)、2 XOR 11 <11(FALSE)、3 XOR 11 <11(FALSE)、4 XOR 11> 11(TRUE)、5 XOR 11> 11(TRUE)、6です。 XOR 11> 11(TRUE)、7 XOR 11> 11(TRUE)、8 XOR 11 <11(FALSE)、9 XOR 11 <11(FALSE)、10 XOR 11 <11(FALSE)。

入力 − int num =12

出力 − nとのXORがより大きな値を生成する、より小さな数の数は− 3

説明

numは12として与えられます。これは、num未満の数値を持つnumのXORを見つける必要があることを意味します。したがって、数値は1 XOR 12> 12(TRUE)、2 XOR 12> 12(TRUE)、3 XOR 12> 12(TRUE)、4 XOR 12 <12(FALSE)、5 XOR 12 <12(FALSE)、6です。 XOR 12 <12(FALSE)、7 XOR 12 <12(FALSE)、8 XOR 12 <12(FALSE)、9 XOR 12 <12(FALSE)、10 XOR 12 <12(FALSE)、11 XOR 12 <12( FALSE)。

以下のプログラムで使用されているアプローチは次のとおりです

  • 整数要素を入力し、numという名前の変数に格納します。

  • numの値を関数に渡してさらに処理します

  • 結果を保存するための一時変数カウントを作成します。

  • num> 0

    になるまでループを開始します
  • ループ内で、IF num&1 ==TRUEを確認してから、カウントをcount + pow(2、temp)

    として設定します。
  • tempの値を1インクリメントします

  • そして、numをnumに設定します>> =1

  • カウントを返す

  • 結果を印刷する

#include
using namespace std;
//Count smaller numbers whose XOR with n produces greater value
int XOR_greater(int n){
   int temp = 0;
   int count = 0;
   while (n > 0){
      if ((n&1) == 0){
         count += pow(2, temp);
      }
      temp++;
      n >>= 1;
   }
   return count;
}
int main(){
   int n = 20;
   cout<<"Count of smaller numbers whose XOR with n produces greater value are: "<<XOR_greater(n) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of smaller numbers whose XOR with n produces greater value are: 11

  1. 桁の合計がC++で指定された合計に等しいn桁の数値の数

    桁数と合計として正の数が与えられます。目標は、入力の合計に等しい桁の合計を持つすべてのd桁の数値を見つけることです。先行ゼロのある数字は、d桁の数字とは見なされません。 範囲は1〜100の数字で、合計は1〜500です。 例を挙げて理解しましょう。 例 入力- 数字=3、digi_sum =3 出力- 桁の合計が指定された合計に等しいn桁の数字の数は次のとおりです。6 説明- 桁の合計が3である3桁の数字は次のとおりです。 102、111、120、201、210、および300。 入力- 数字=4digi_sum =2 出力- 桁の合計が指定された合計に等しいn桁の数字の数は

  2. Xとの合計がC++のフィボナッチ数であるノードをカウントします

    ノードの重みを数値として持つ二分木を指定します。目標は、その数がフィボナッチ数であるような重みを持つノードの数を見つけることです。フィボナッチ数列の数は次のとおりです。0、1、1、2、3、5、8、13…。n番目の数はの合計です。 (n-1)番目と(n-2)番目。重みが13の場合、それはフィボナッチ数であるため、ノードがカウントされます。 例 入力 temp=1。値を入力した後に作成されるツリーを以下に示します- 出力 Count the nodes whose sum with X is a Fibonacci number are: 3 説明 we are given with