第一行输入一个整数
代表需要求解的第一个数字。
第二行输入一个整数
代表需要求解的第二个数字。
第一行输出一个整数,代表
在二进制表示下的
的个数。
第二行输出一个整数,代表
在二进制表示下的
的个数。
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)); } } }