本教學將討論將一個數字表示為最小偽二進制數之和。偽二進制數是由二進制數字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'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
一個外部while循環用於獲取N並在每個位置上選擇數字以找到X。
我們透過將N的值更新到temp變數中,並使用內部迴圈檢查temp變數的每個位置並更新變數X的該位置。
列印X的值,因為它是偽二進位數。
我們透過將N減去X並再次進入外部循環,直到N變成0來更新N。
在本教程中,我們討論如何將一個數字表示為最小可能的偽二進制數總和。我們討論了找到所有偽二進制數的方法。我們也討論了相同的C 程式碼,我們可以用其他程式語言如C、Java、Python等編寫。希望您會發現本教學有幫助。
以上是在C++中,將一個數字表示為最小可能的偽二進制數之和的詳細內容。更多資訊請關注PHP中文網其他相關文章!