C++ 中的邪恶数字与示例

在这个问题中,我们给一个数组一个数字 N。我们的任务是检查这个数字是邪恶数字还是邪恶数字。 

邪恶数: 它是一个正数,在其二进制展开中有偶数个 1。

示例: 5、17

可恶数: 它是一个正数,在其二进制扩展中具有奇数个 1。

示例:  4、6

让我们举个例子来理解这个问题,

输入:  N = 65

输出: 邪恶数字

解释: 

65 的二进制展开:1000001

解决方法: 

该问题的一个简单解决方案是找到数字的二进制展开式,然后计算展开式中 1 的数量。如果计数是偶数,则该数字是邪恶的数字,否则它是可憎的数字。 

程序来说明我们的解决方案的工作,

示例

#include <iostream>
using namespace std;

int isEvilNumber(int n) {

   int count = 0;
   while (n != 0) {
      int r = n % 2;
      if(r == 1)
         count++;
      n = n / 2;
   }
   
   if (count % 2 == 0)
      return 1;
   else
      return 0;
}

int main(void)
{
   int num = 2049;
   if (isEvilNumber(num) )
      cout<<"号码 "<<num<<" is an Evil Number";
   else
      cout<<"号码 "<<num<<" is an Odious Number";
   return 0;
}

输出 -

号码 2049 is an Evil Number