Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Số Evil (Số ác) với ví dụ trong C++


Cho số N. Nhiệm vụ: kiểm tra N là số Evil hay số Odious.

Số Evil: Số dương có số bit 1 trong nhị phân là chẵn. VD: 5 (101), 17 (10001).

Số Odious: Số dương có số bit 1 trong nhị phân là lẻ. VD: 4 (100), 6 (110).

Ví dụ:

Đầu vào: N = 65

Đầu ra: Evil Number

Giải thích: 65 nhị phân = 1000001 (hai bit 1).

Phương pháp giải

Chuyển sang nhị phân, đếm bit 1. Chẵn => Evil, lẻ => Odious.

Chương trình minh họa

Ví dụ

#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;
}

Kết quả

The number 2049 is an Evil Number