카타 8급 Evil or Odious

1 C[ | ]

const char* evil(int value) {
  return __builtin_popcount(value) % 2 ? "It's Odious!" : "It's Evil!";
}
const char *evil(int value) {
  char count = 0;
  while(value > 0){
    if(value & 1) count++;
    value >>= 1;
  }
  return count%2 ? "It's Odious!" : "It's Evil!";
}
const char *evil(int value) {
  char count = 0;
  while(value > 0){
    count = count ^ (value & 1);
    value >>= 1;
  }
  return count ? "It's Odious!" : "It's Evil!";
}
const char *evil(int value) {
  int count = 0;
  while(value) {
    value &= value-1;
    count++;
  }
  return count%2 ? "It's Odious!" : "It's Evil!";
}

2 C++[ | ]

std::string evil(int n)
{
  return __builtin_popcount(n) % 2 ? "It's Odious!" : "It's Evil!";
}
std::string evil(int n)
{
  int count = 0;
  while (n > 0) {
    if (n % 2) count++;
    n /= 2;
  }
  return count%2 ? "It's Odious!" : "It's Evil!";
}
std::string evil(int n)
{
  std::bitset<32> bits(n);
  return (bits.count() & 1) ? "It's Odious!" : "It's Evil!";
}
std::string evil(int n)
{
  char count = 0;
  while(n > 0){
    count = count ^ (n & 1);
    n >>= 1;
  }
  return count ? "It's Odious!" : "It's Evil!";
}
std::string evil(int n)
{
  int count = 0;
  while(n) {
    n &= n-1;
    count++;
  }
  return count%2 ? "It's Odious!" : "It's Evil!";
}
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}