本教程将讨论将一个数字表示为最小伪二进制数之和。伪二进制数是由二进制数字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等编写。希望您会发现本教程有帮助。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!