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

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


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

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

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

入力 − x =6

出力 − N ==XORとNの差が4である数の数

説明 −数字は0 246です。

入力 − x =20

出力 − N ==XORとNの差が4である数の数

説明 −数字は0 4 16 20

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

  • 整数Nを取ります。

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

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

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

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

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

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

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

出力

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

Count of numbers whose difference with N == XOR with N: 16

  1. 素数の数<=Nで、それまでの素数の数との差は、C++では>=Kです。

    2つの整数NとKが与えられた場合、目標は、以下の条件に従うような数の数を見つけることです- 番号<=N =Kここで、countは、Number以下の素数の数です。 例 入力 N = 5, K = 2 出力 Count of numbers < = N whose difference with the count of primes upto them is > = K are: 2 説明 The numbers that follow the conditions are: 5 ( 5−2>=2 ) and 4 ( 4−2>

  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 +