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