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

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++コードについても説明しました。このチュートリアルがお役に立てば幸いです。


  1. C++でのデュードニー番号

    与えられた数の底の数理論で定義された数は、最初の自然数の桁の合計が2番目の数の桁の合計に等しくなるように、別の自然数の完全な3乗に等しい自然数です。 (ウィキペディア)。 番号はヘンリー・デュードニーによって発見されました 。その数式 は- ここでは、整数nが与えられます。私たちの仕事は、与えられた番号nが人物番号であるかどうかを確認することです。 問題を理解するために例を見てみましょう 入力: N =17592 出力: いいえ 説明: 与えられた番号はダドニー番号ではありません。 ソリューションアプローチ- 解決策は、デュードニー番号の基本的な定義にあります。

  2. 数値がC++で2つの三角数の合計として表現できるかどうかを確認します

    このセクションでは、1つの数を2つの三角数の合計として表現できるかどうかを確認します。三角数は以下のようになります- 例から、1、3、6、10はいくつかの三角数であることがわかります。数N(たとえば16)を2つの三角数(6、10)の合計として表す必要があります。 アプローチは非常に簡単です。 N未満のすべての三角数を取得する必要があります。これらの値からセットを作成します。ここで、集合からXと言う数を取り、N – Xが集合に存在するかどうかを確認する必要があります。そうすると、Xは2つの三角数の合計として表すことができます。 例 #include <iostream> #