Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm số có tổng với X bằng phép XOR với X trong C++


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