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