ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

36:二进制分类(新人第一次写,轻喷)还有一点二进制转换

2021-07-12 19:59:20  阅读:240  来源: 互联网

标签:10 类数 轻喷 二进制 ++ 个数 36 int


描述

若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数。

例如:

(13)10 = (1101)2,其中1的个数为3,0的个数为1,则称此数为A类数;

(10)10 = (1010)2,其中1的个数为2,0的个数也为2,称此数为B类数;

(24)10 = (11000)2,其中1的个数为2,0的个数为3,则称此数为B类数;

程序要求:求出1~1000之中(包括1与1000),全部A、B两类数的个数。

输入

无。

输出

一行,包含两个整数,分别是A类数和B类数的个数,中间用单个空格隔开。

样例输入

(无)

样例输出

(不提供)

解析:这道题的思路很简单,首先先写一个函数判断这个二进制0多1多,然后进行判断接着返回值return 0/return 1

主程序判断返回的是1还是0,对A,B的个数进行统计,然后输出,就这样

然后上代码(还有不懂得直接看注释)

#include<bits/stdc++.h>
using namespace std;
int jz(int a){
int o=0,z=0;//o统计1的个数,z统计0的个数;
while(a>0) {//判断
if(a%2==1){//短除求这个余是0是1,二进制判断不会就不怪我了,自己学往后看
o++;
}
else{
z++;
}
a=a/2;//a要发生变化不然就直接死循环
}
if(o>z){
return 1;//1>0,返回1;
}
else
return 0;//否则返回0
}
int main(){
int n=0,m=0;//n是A组数个数,m是B组数个数 ,不想按shift,懒
for(int i=1;i<=1000;i++){//枚举1~1000的所有数
if(jz(i)==1){//判断返回的值是不是1,如果是就是A组数,n++否则就是B组数;
n++;
}
else{
m++;
}
}
cout<<n<<" "<<m;
}

//然后这个程序几个要注意的1 统计的都要赋初始值为0,2 a 是要变化的在这个while 循环后面进行变化然后就没了吧

最后最快的程序类型就是直接输出了上个程序求出答案

然后输出

#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"538 462" ;
}

补充二进制判断:

二进制算法
短除法;
例如100
100%2=0(二进制第一位为0
100/2%2=50%2=0(二进制第二位为0
100/2/2%2=25%2=1(第三位为1
25/2=12,12%2=0(第四位为0
12/2=6,6%2=0(第五位为0
6/2=3,3%2=1(第六位为1
3/2=1,1%2=1(第七位为1
然后倒序输出(倒着输出
所以100二进制为1100100

补充一下,十进制小数转二进制数
就是*2求整数
例如0.25*2=0.5没整数为0
0.5*2=1.0有整数为1刚好为1.00所以结束,正序输出(上向下)
所以为0.01
还有就是小数和整数共有
23.125
就是整数(二进制).(小数点)小数
23上面有我直接写过程了
23%2.。。。1
11%2.。。。1
5%2.。。。1
2%2.。。。0
1%2.。。。1
(23)10= (10111)2
0.125*2=0.250 0
0.25*2=0.5 0
0.5*2=1.0 1
(0.125)10=(001)2
最后
(23.125)10= (10111.001)2

标签:10,类数,轻喷,二进制,++,个数,36,int
来源: https://blog.csdn.net/MYDREAMmua/article/details/118682414

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有