首頁 > 後端開發 > C++ > 主體

在C++中,將一個數字表示為最小可能的偽二進制數之和

WBOY
發布: 2023-08-25 20:33:22
轉載
1240 人瀏覽過

在C++中,將一個數字表示為最小可能的偽二進制數之和

本教學將討論將一個數字表示為最小偽二進制數之和。偽二進制數是由二進制數字0和1組成的數字。偽二進制數的例子有00、11、10、100、111、1011等。

以下是一些以偽二進制數之和表示的數字的範例。

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的最小偽二進位數的最佳方法之一。

  • 取一個數字X,並依照數字N的各位元更新X的位數為1或0。

  • 檢查N的每個位數:

    • 如果為0,則將X的該位元設為0。

    • 如果不是0,則將X的該位元設為1。

    • 假設N = 32,則X將變成11。

  • 然後X將成為偽二進制數。

  • 現在將N減去X,並重複步驟1,直到N變為零。

範例

上述方法的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&#39;s and 1&#39;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
登入後複製

理解程式碼

  • 一個外部while循環用於獲取N並在每個位置上選擇數字以找到X。

  • 我們透過將N的值更新到temp變數中,並使用內部迴圈檢查temp變數的每個位置並更新變數X的該位置。

  • 列印X的值,因為它是偽二進位數。

  • 我們透過將N減去X並再次進入外部循環,直到N變成0來更新N。

結論

在本教程中,我們討論如何將一個數字表示為最小可能的偽二進制數總和。我們討論了找到所有偽二進制數的方法。我們也討論了相同的C 程式碼,我們可以用其他程式語言如C、Java、Python等編寫。希望您會發現本教學有幫助。

以上是在C++中,將一個數字表示為最小可能的偽二進制數之和的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板