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