文章
40
粉丝
607
获赞
68
访问
419.5k
#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的个数。但是看完大佬的题解之后发现自己忽略(其实不是忽略,是根本没想到菜哭)了一个问题:int 型是四个字节,一个字节存放8个1或者0
这里用了bitset库,写了一个跟之前题解不一样的方法!!也是跟身边大佬偷学的(本菜鸡这种东西根本想不到),搬过来分享一下!!大家有兴趣看看!!
对于这个叫做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...
登录后发布评论
暂无评论,来抢沙发