Computer >> Máy Tính >  >> Lập trình >> C ++

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

Chúng ta là một số N. Mục tiêu là tìm các số từ 0 đến N có OR với N bằng XOR với N.

Chúng tôi sẽ làm điều này bằng cách vượt qua số không. từ i =0 đến i <=N và đối với mỗi i, nếu (N ^ i ==i | N) thì số gia tăng.

Hãy cho chúng tôi hiểu với các ví dụ.

Đầu vào - X =6

Đầu ra - Đếm 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 - Đếm 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 tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi lấy số nguyên N.

  • Hàm orisXOR (int n) nhận n và trả về số lượng các số có OR với n bằng XOR với n.

  • Lấy số lượng ban đầu là 0.

  • Đi ngang từ i =0 đến i <=n.

  • Nếu tôi | n ==i ^ n. Số lượng tăng dần

  • Khi kết thúc số vòng lặp for sẽ có kết quả mong muốn.

  • Trả lại số lượng và in.

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<<"Count of numbers whose OR with N == XOR with N: "<<nums;
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of numbers whose OR with N == XOR with N: 1