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