文章

40

粉丝

607

获赞

68

访问

401.1k

头像
1008二进制0和1的个数(不要忽略掉int的问题!!!!)
P1008 华南师范大学/贵州大学机试
发布于2020年2月21日 13:40
阅读数 14.2k

#include
#include

using namespace std;

int main()
{
    bitset<32>bit;//bitset中只有“0”,“1”两个元素,且每个元素只占1bit空间
    int n;
    while(cin >> n)
        {
        bit = n;
        bit = bit.flip();
        cout << "count0=" << bit.count() << " ";
        bit = bit.flip();
        cout << "count1=" << bit.count() << endl;
    }
    
    return 0;
}

这题第一次没注意,直接换算二级制后拿出0和1的个数。但是看完大佬的题解之后发现自己忽略(其实不是忽略,是根本没想到crying菜哭)了一个问题:int 型是四个字节,一个字节存放8个1或者0

这里用了bitset库,写了一个跟之前题解不一样的方法!!也是跟身边大佬偷学的(本菜鸡这种东西根本想不到),搬过来分享一下laugh!!大家有兴趣看看!!

对于这个叫做bit的bitset的一些函数
bit.size()       返回大小(位数)
bit.count()     返回1的个数
bit.any()       返回是否有1
bit.none()      返回是否没有1
bit.set()       全都变成1
bit.set(p)      将第p + 1位变成1(bitset是从第0位开始的!) 
bit.set(p, x)   将第p + 1位变成x
bit.reset()     全都变成0
bit.re...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发