邪恶数,附 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<<"The number "<<num<<" is an Evil Number";
   else
      cout<<"The number "<<num<<" is an Odious Number";
   return 0;
}

输出 −

The number 2049 is an Evil Number

更新于: 2021-01-22

777 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始
广告