JavaStudy——0070:二进制分类

总时间限制: 1000ms 内存限制: 65536kB

描述
若将一个正整数化为二进制数,在此二进制数中,我们将数字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类数的个数,中间用单个空格隔开。

Accepted代码

public class Main {
    public static void main(String[] args) {
    	int classa=0,classb=0;
        for(int i=1;i<=1000;i++) {
        	int one=0;
        	int zero=0;
        	int now=i;
        	while(now!=0) {
        		int r=now%2;
        		if(r==1) one++;
        		else if(r==0) zero++;
        		now/=2;
        	}
        	if(one>zero) classa++;
        	else classb++;
        }
        System.out.println(classa+" "+classb);
        in.close();
    }
}

你可能感兴趣的:(OpenJudge,-,javastudy)