‹ 上一题 下一题 ›

g5-08332. 数一数几个 1 未做

1000 ms 256 MB 测试点 10 通过率 100% GESP-55级·STLbitset

题目描述

bitset<16> 可以把一个整数看成 16 个二进制位。先看下面这个完整模板程序:它读入一个整数,用 bitset<16> 装下它,再输出它的 16 位二进制形式:

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    bitset<16> b(n);                  // 用整数 n 构造 16 位的 bitset
    cout << b.to_string() << endl;    // 输出 16 位二进制,比如 42 会输出 0000000000101010
    return 0;
}

请把它改造成:同样读入一个整数 ,输出 的 16 位二进制里 1 的个数。

输入格式

一行一个整数 ()。

输出格式

一行一个整数: 的 16 位二进制表示中 1 的个数。

样例

输入:

42

输出:

3

42 的 16 位二进制是 0000000000101010,数一数,1 一共有 3 个。

数据范围

。提示:bitset 自带数 1 的成员函数 count();而 size() 回答的是「一共多少位」,跟 1 的个数是两回事。

输入
输出

            
答案