第一行输入一个整数
代表需要求解的第一个数字。
第二行输入一个整数
代表需要求解的第二个数字。
第一行输出一个整数,代表
在二进制表示下的
的个数。
第二行输出一个整数,代表
在二进制表示下的
的个数。
5 0
2 0
十进制
到
的二进制表示如下:
十进制
等于二进制
;
十进制
等于二进制
;
十进制
等于二进制
;
十进制
等于二进制
;
十进制
等于二进制
;
十进制
等于二进制
。
本题数据已进行规范,不再需要读入至文件结尾(2025/01/09)。
#include<stdio.h>
int main()
{
int num,cnt;
while(scanf("%d",&num)!=EOF)
{
cnt=0;
while(num>0)
{
if(num%2==1)
cnt++;
num = num/2;
}
printf("%d\n",cnt);
}
} 为了扣题,使用了>>向右的位运算
#include<stdio.h>
#include<math.h>
int count(int in){
int num=0;
while(in >3){
if((in % (in = in >> 1)) >=1){
num++;
}
}
if(in == 3){
num = num + 2;
}else if(in == 2){
num = num + 1;
}
return num;
}
int main(){
int in;
while(scanf("%d", &in) != EOF){
if(in == 0 || in == 1){
printf("%d\n", in);
}else{
printf("%d\n", count(in));
}
}
}