// Evil number = positive whole number whose binary representation contains an even number of 1's
#include <iostream>
#include <string>
#include <bitset>
int countNumberOfOne(const std::string binaryNumber) {
int length = binaryNumber.length();
int count = 0;
char ch;
for (int i = 0; i < length; i++) {
ch = binaryNumber[i];
if (ch == '1') {
count++;
}
}
return count;
}
bool checkEvilNumber(int number) {
std::string binaryNumber = std::bitset<16>(number).to_string();
std::cout << number << " = " << binaryNumber << " = ";
return (countNumberOfOne(binaryNumber) % 2 == 0) ? true : false;
}
int main()
{
int number = 23;
std::cout << checkEvilNumber(number) << std::endl;
number = 9863;
std::cout << checkEvilNumber(number) << std::endl;
}
/*
run:
23 = 0000000000010111 = 1
9863 = 0010011010000111 = 0
*/