Cho một số X. Mục tiêu là tìm các số từ 0 đến X mà tổng với X bằng phép XOR với X.
Ta thực hiện bằng cách duyệt số từ i=0 đến i<=X và với mỗi i, nếu (i+X)==(i^X) thì tăng biến đếm.
Hãy hiểu qua các ví dụ.
Đầu vào − X=6
Đầu ra − Số lượng số có tổng với X == XOR với X: 2
Giải thích − Các số là 0 và 1.
Đầu vào − X=20
Đầu ra − Số lượng 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 sử dụng trong chương trình dưới đây
- Nhận số nguyên X.
- Hàm
sumisXOR(int x)nhận x và trả về số lượng số có tổng với x bằng XOR với x. - Khởi tạo biến count = 0.
- Duyệt từ i=0 đến i<=x.
- Nếu
i+x == i^x. Tăng count. - Sau vòng lặp count sẽ chứa kết quả mong muốn.
- Trả về count và in ra.
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 << "Số lượng số có tổng với X == XOR với X: " << nums;
return 0;
}
Đầu ra
Nếu chạy mã trên sẽ cho kết quả sau:
Số lượng số có tổng với X == XOR với X: 1