C++で可能な最小の疑似2進数の合計として数値を表す
このチュートリアルでは、最小の疑似2進数の合計としての数値の表現について説明します。疑似2進数は、0と1の2進数のみで構成される番号です。疑似2進数の例としては、00、11、10、100、111、1011などがあります。
以下は、疑似2進数の合計として表される数値の例です。
Input : 23 Output : 11 + 11 + 1 Explanation : 23 = 11 + 11 + 1, sum of pseudo-binary numbers(11, 11, 1) is 23. Input : 50 Output : 10 + 10 + 10 + 10 + 10
解決策を見つけるためのアプローチ
以下は、Nを表す最小の疑似2進数を見つけるための最良のアプローチの1つです。
-
数字Xを取り、その数字を数字Nの数字に応じて1または0に更新します。
-
Nの各場所のチェックディジット
-
0の場合は、Xのその場所を0に更新します。
-
ゼロでない場合は、Xのその場所を1に更新します。
-
N =32とすると、Xは11になります
-
-
その場合、Xは1つの疑似2進数になります。
-
次に、NをXだけデクリメントし、Nがゼロになるまで手順1を繰り返します。
例
上記のアプローチのC++コード
#include<iostream> using namespace std; int main(){ int N = 51; // find a pseudo-binary number until N becomes 0. cout << "pseudo-binary representation of " << N << " is: "; while (N > 0){ // finding X which contains 0's and 1's according to N. int temp = N; int X = 0, bit = 1; // checking each place of N for zero or non-zero. while (temp!=0){ int last_dig = temp % 10; temp = temp / 10; if (last_dig != 0) X += bit; bit *= 10; } // printing one pseudo-binary number. cout << X << " "; // Updating N by subtracting with X. N = N - X; } return 0; }
出力
pseudo-binary representation of 51 is: 11 10 10 10 10
コードを理解する
-
Nを取得し、Xを見つけるためにすべての場所で数字を選択するための外側のwhileループ。
-
一時変数の各場所をチェックし、変数Xのその場所を更新するために、Nと内部ループを使用して一時変数の値を更新しています。
-
Xの値は1つの疑似2進数であるため、出力します。
-
Xで減算し、Nが0になるまで再び外側のループに移動することで、Nを更新します。
結論
このチュートリアルでは、可能な最小の疑似2進数の合計として数値を表す方法について説明しました。すべての疑似2進数を見つける方法について説明しました。また、C、Java、Pythonなどの他のプログラミング言語で記述できるC++コードについても説明しました。このチュートリアルがお役に立てば幸いです。
-
C++でのデュードニー番号
与えられた数の底の数理論で定義された数は、最初の自然数の桁の合計が2番目の数の桁の合計に等しくなるように、別の自然数の完全な3乗に等しい自然数です。 (ウィキペディア)。 番号はヘンリー・デュードニーによって発見されました 。その数式 は- ここでは、整数nが与えられます。私たちの仕事は、与えられた番号nが人物番号であるかどうかを確認することです。 問題を理解するために例を見てみましょう 入力: N =17592 出力: いいえ 説明: 与えられた番号はダドニー番号ではありません。 ソリューションアプローチ- 解決策は、デュードニー番号の基本的な定義にあります。
-
数値がC++で2つの三角数の合計として表現できるかどうかを確認します
このセクションでは、1つの数を2つの三角数の合計として表現できるかどうかを確認します。三角数は以下のようになります- 例から、1、3、6、10はいくつかの三角数であることがわかります。数N(たとえば16)を2つの三角数(6、10)の合計として表す必要があります。 アプローチは非常に簡単です。 N未満のすべての三角数を取得する必要があります。これらの値からセットを作成します。ここで、集合からXと言う数を取り、N – Xが集合に存在するかどうかを確認する必要があります。そうすると、Xは2つの三角数の合計として表すことができます。 例 #include <iostream> #