首页 > 后端开发 > C++ > 正文

在C++中,将一个数字表示为最小可能的伪二进制数之和

WBOY
发布: 2023-08-25 20:33:22
转载
1277人浏览过

在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。

    立即学习C++免费学习笔记(深入)”;

  • 检查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中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:tutorialspoint网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号