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

カウント数は、C++の2進表現ですべて1になります


正の整数Nが与えられます。目標は、バイナリ表現にすべて1が含まれるN以下の数値をカウントすることです。たとえば、1は1、3は11、7は111、15は1111...などです。

数字を見ると、すべて2i-1です。私が1から始めるところ。n未満のそのような数をチェックすること。 2i-1<=nの場合に比較します。次に、カウントをインクリメントします。

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

入力 − n =15

出力 −すべて1を2進数にした数:4

説明 −同じ素数の合計としての数−数は1 3 7 15

になります

入力 − n =50

出力 −すべて1を2進数にした数:5

説明 −同じ素数の合計としての数−

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

  • 正の整数Nを取ります。

  • 関数allOnes(int n)は、nを入力として受け取り、すべて1の数値を2進表現で返します。

  • そのような数の場合、初期変数カウントを0とします。

  • forループを使用してi=1からi<=nまでトラバースします。

  • 各iについて、pow(2、i)-1がn以下の場合。インクリメントカウント。

  • forループの最後に結果としてカウントを返します。

#include <bits/stdc++.h>
using namespace std;
int allOnes(int n){
   int count = 0;
   for(int i=1;i<=n;i++){
      if(n>=pow(2,i)-1){
         count++;
         //cout<<" "<<pow(2,i)-1;
      }
   }
   return count;
}
int main(){
   int N=23;
   cout <<endl<< "Number having all 1's in binary : "<<allOnes(N);
   return 0;
}

出力

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

Number having all 1's in binary : 4

  1. C++で高さhのバランスの取れた二分木を数える

    二分木の高さHが与えられます。目標は、指定された高さのバランスの取れたバイナリツリーの数/数を見つけることです。 二分木 −は、各ノードに最大2つの子(左の子と右の子)を持つツリーデータ構造です。 高さバランスのとれた二分木 −は、すべてのノードの2つのサブツリーの深さが1または0だけ異なるバイナリツリーとして定義されます。これは、すべてのノードの左側のサブツリーと右側のサブツリーの高さであり、最大差は1です。 次の図には、高さh=3で可能な高さのバランスが取れた二分木が含まれています。 入力 Height H=2 出力 Count of Balanced Binary Trees

  2. C++での特定の数値のバイナリ表現

    2進数 は、0と1の2桁のみで構成される数値です。たとえば、01010111。 特定の数値を2進数で表すにはさまざまな方法があります。 再帰的方法 このメソッドは、再帰を使用して2進数形式で数値を表すために使用されます。 アルゴリズム Step 1 : if number > 1. Follow step 2 and 3. Step 2 : push the number to a stand. Step 3 : call function recursively with number/2 Step 4 : pop number from stack and print remai