邪恶数,附 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
广告