Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số có tổng với x bằng XOR với x trong C ++

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