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

C++でNとのXORがNとのORに等しい数をカウントします


私たちは数Nです。目標は、NとのORがNとのXORに等しい0からNまでの数を見つけることです。

これを行うには、noをトラバースします。 i=0からi<=Nまで、および各iについて、(N ^ i ==i | N)の場合、カウントをインクリメントします。

例を挙げて理解しましょう。

入力 − x =6

出力 − OR with N ==XOR with N:2

の数の数

説明 −数字は01です。

入力 − x =20

出力 −NとのOR==NとのXOR:8

の数の数

説明 −数字は0 1 2 3 8 9 10 11

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

  • 整数Nを取ります。

  • 関数orisXOR(int n)はnを取り、nとのORがnとのXORに等しい数のカウントを返します。

  • 初期カウントを0とします。

  • i=0からi<=nまでトラバースします。

  • i | n ==i^nの場合。インクリメントカウント

  • forループカウントの最後に、望ましい結果が得られます。

  • カウントを返し、印刷します。

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int orisXOR(int n){
   int count = 0;
   for (int i = 0; i <= n; i++){
      if((n|i)==(i^n))
         { count++; }
   }
   return count;
}
int main(){
   int N = 15;
   int nums=orisXOR(N);
   cout <<endl<<"Count of numbers whose OR with N == XOR with N: "<<nums;
   return 0;
}

出力

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

Count of numbers whose OR with N == XOR with N: 1

  1. 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

  2. C++でマンハッタン距離に等しい距離のパスをカウントします

    2D座標系上の2つの点を(x1、y1)および(x2、y2)として表す変数x1、x2、y1、y2が与えられます。目標は、これら2つのポイント間のマンハッタン距離に等しい距離を持つすべてのパスを見つけることです。 マンハッタン距離 マンハッタン2点(x1、y1)と(x2、y2)の間の距離は- MD =| x1 – x2 | + | y1 – y2 | A =| x1 –x2|を取りましょうおよびB=| y1 – y2 | マンハッタン距離がMDに等しいすべてのパスでは、エッジが(A + B)としてカウントされます。水平エッジとB垂直エッジ。したがって、2つのグループに分割された(A +