How to check if a number is evil number (binary representation contains even number of 1) in C++

1 Answer

0 votes
// 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
   
*/

 



answered Nov 25, 2023 by avibootz
...