Chúng ta là một số N. Mục đích là tìm các số từ 0 đến N mà hiệu của chúng 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à với mỗi i, if (N-X ==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 các số có hiệu số với N ==XOR với N:4
Giải thích - Các số là 0 2 4 6.
Đầu vào - X =20
Đầu ra - Đếm các số có hiệu số với N ==XOR với N:4
Giải thích - Các số là 0 4 16 20
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 diffisXOR (int n) nhận n và trả về số lượng các số có hiệu số 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 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 diffisXOR(int n){ int count = 0; for (int i = 0; i <= x; i++){ if((x-i)==(i^x)) { count++; } } return count; } int main(){ int N = 15; int nums=diffisXOR(N); cout <<endl<<"Count of numbers whose difference 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 difference with N == XOR with N: 16