バイナリカテゴリ


【タイトル説明】
正の整数を2進数にすると、この2進数では、数字1の個数が0より多い個数の2進数を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の2種類の数の個数を求める.
    【入力】
    (なし)
    【出力】
    Aクラス数とBクラス数の2つの整数を含む行で、中間は単一のスペースで区切られています.
    【入力サンプル】
    (なし)
    【出力サンプル】
    (なし)
    【ソースプログラム】
    #include
    using namespace std;
    bool judge(int x);
    
    int main()
    {
        int a=0,b=0;
        int i;
    
        for(i=1; i<=1000; i++) //  1-1000  
            if(judge(i))// i A  
                a++;
            else// i B  
                b++;
        cout<0)// つの を   にして、Aクラス かBクラス かを  する
    {
    if(x%2)
    a++;//a  1の  
    else
    b++;//b  0の  
    x/=2;
    }
    return a>b;//
    }