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

Đếm số có phép OR với N bằng phép XOR với N trong C++


Cho một số N. Mục tiêu là tìm các số từ 0 đến N mà phép OR với N bằng phép XOR với N.

Ta thực hiện bằng cách duyệt số từ i=0 đến i<=N và với mỗi i, nếu (N|i)==(i^N) thì tăng biến đếm.

Hãy hiểu qua các ví dụ.

Đầu vào − X=6

Đầu ra − Số lượng số có OR với N == XOR với N: 2

Giải thích − Các số là 0, 1.

Đầu vào − X=20

Đầu ra − Số lượng số có OR với N == XOR với N: 8

Giải thích − Các số là 0, 1, 2, 3, 8, 9, 10, 11

Phương pháp sử dụng trong chương trình dưới đây

  • Nhận số nguyên N.
  • Hàm orisXOR(int n) nhận n và trả về số lượng số có OR với n bằng XOR với n.
  • Khởi tạo biến count = 0.
  • Duyệt từ i=0 đến i<=n.
  • Nếu i|n == i^n. Tăng count.
  • Sau vòng lặp count sẽ chứa kết quả mong muốn.
  • Trả về count và in ra.

Ví dụ

#include <bits/stdc++.h>
#include <math.h>
using namespace std;

int orisXOR(int n) {
    int count = 0;
    for (int i = 0; i <= n; i++) {
        if((n|i) == (i^n)) {
            count++;
        }
    }
    return count;
}

int main() {
    int N = 15;
    int nums = orisXOR(N);
    cout << endl << "Số lượng số có OR với N == XOR với N: " << nums;
    return 0;
}

Đầu ra

Nếu chạy mã trên sẽ cho kết quả sau:

Số lượng số có OR với N == XOR với N: 1