Chúng ta là một số X. Mục tiêu là tìm các số từ 0 đến X có tổng với X bằng XOR với X.
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 <=X và với mỗi i, if (i + X ==i ^ X) thì đếm 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ó tổng với X ==XOR với X:2
Giải thích - Các số chỉ là 0 và 1.
Đầu vào - X =20
Đầu ra - Đếm số có tổng với X ==XOR với X: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 X.
-
Hàm sumisXOR (int x) nhận x và trả về tổng số các số có tổng với x bằng x hoặc với x.
-
Lấy số lượng ban đầu là 0.
-
Đi ngang từ i =0 đến i <=x.
-
Nếu i + x ==i ^ x. Số lượng tăng dần
-
Kết thúc đếm 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 sumisXOR(int x){ int count = 0; for (int i = 0; i <= x; i++){ if((i+x)==(i^x)) { count++; } } return count; } int main(){ int X = 15; int nums=sumisXOR(X); cout <<endl<<"Count of numbers whose sum with X == XOR with X: "<<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 sum with X == XOR with X: 1