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

C++のバイナリ表現での0と1のXORカウント


この問題では、番号が与えられます。私たちのタスクは、数値の2進表現で0と1のカウントのXORを見つけることです。

問題を理解するために例を見てみましょう

入力

n = 9

出力

0

説明

binary = 1001
Count of 0s = 2
Count of 1s = 2
2 ^ 2 = 0

この問題を解決するために、最初に同等の2進数の数値を変換し、次に数値の各ビットを反復処理して、0と1をカウントし、次に0と1のカウントのXORを見つけます。

上記の解決策を説明するプログラム

#include<iostream>
using namespace std;
int countXOR10(int n) {
   int count0s = 0, count1s = 0;
   while (n){
      (n % 2 == 0) ? count0s++ :count1s++;
      n /= 2;
   }
   return (count0s ^ count1s);
}
int main() {
   int n = 21;
   cout<<"XOR of count of 0s and 1s in binary of "<<n<<" is "<<countXOR10(n);
   return 0;
}

出力

XOR of count of 0s and 1s in binary of 21 is 1

  1. C ++のバイナリツリー(反復および再帰)の完全なノードをカウントします

    バイナリツリーが与えられ、タスクは、反復的かつ再帰的なアプローチを使用して、バイナリツリーで使用可能な完全なノードの数を計算することです。フルノードとは、両方の子があり、子がnullでないノードです。フルノードでは、正確に2つの子を持つノードを考慮することに注意してください。 バイナリツリーは、データストレージの目的で使用される特別なデータ構造です。二分木には、各ノードが最大2つの子を持つことができるという特別な条件があります。バイナリツリーには、検索が並べ替えられた配列と同じくらい高速であり、挿入または削除操作がリンクリストと同じくらい高速であるため、順序付き配列とリンクリストの両方の利点

  2. C ++のバイナリツリー(反復および再帰)のハーフノードをカウントします

    バイナリツリーが与えられ、タスクは、反復的かつ再帰的なアプローチを使用して、バイナリツリーで使用可能なハーフノードの数を計算することです。ハーフノードは、子が1つだけで、もう1つの子がnullであるノードです。ハーフノードでは、リーフノードを考慮しないことに注意してください。 バイナリツリーは、データストレージの目的で使用される特別なデータ構造です。二分木には、各ノードが最大2つの子を持つことができるという特別な条件があります。バイナリツリーには、検索が並べ替えられた配列と同じくらい高速であり、挿入または削除操作がリンクリストと同じくらい高速であるため、順序付き配列とリンクリストの両方の利点