首页 > 解决方案 > 对于 c++ 集合,set.size()&1 是什么?

问题描述

这是代码,它返回“忽略他!” 当尺寸奇数时

#include <set>
std::set<char> s;
int main(){
    char c;
    while(std::cin>>c)s.insert(c);
    std::cout<<(s.size()&1?"IGNORE HIM!":"CHAT WITH HER!");
    return 0;
}

标签: c++

解决方案


您已经注意到了这种模式,即set.size()&1当大小为奇数时是正确的。

对数字执行按位与 ( &) 会将所有位设置为 0,除了最后一位(如果为 1)。当数字为奇数时,最后一位仅为 1。

例如

  101100  // even
& 000001
= 000000  // false


  101101  // odd
& 000001
= 000001  // true

推荐阅读