Maison > développement back-end > C++ > En C++, représente un nombre comme la plus petite somme possible de nombres pseudo-binaires

En C++, représente un nombre comme la plus petite somme possible de nombres pseudo-binaires

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2023-08-25 20:33:22
avant
1347 Les gens l'ont consulté

En C++, représente un nombre comme la plus petite somme possible de nombres pseudo-binaires

本教程将讨论将一个数字表示为最小伪二进制数之和。伪二进制数是由二进制数字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
Copier après la connexion

寻找解决方案的方法

以下是寻找表示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;
}
Copier après la connexion

输出

pseudo-binary representation of 51 is: 11 10 10 10 10
Copier après la connexion

理解代码

  • 一个外部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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal