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

Đếm số có hiệu số với N bằng XOR với N trong C ++

Chúng ta là một số N. Mục đích là tìm các số từ 0 đến N mà hiệu của chúng với N bằng XOR với N.

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 <=N và với mỗi i, if (N-X ==i ^ N) thì số 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 các số có hiệu số với N ==XOR với N:4

Giải thích - Các số là 0 2 4 6.

Đầu vào - X =20

Đầu ra - Đếm các số có hiệu số với N ==XOR với N:4

Giải thích - Các số là 0 4 16 20

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 N.

  • Hàm diffisXOR (int n) nhận n và trả về số lượng các số có hiệu số với n bằng xor với n.

  • Lấy số lượng ban đầu là 0.

  • Đi ngang từ i =0 đến i <=n.

  • Nếu i-n ==i ^ n. Số lượng tăng dần

  • Khi kết thúc số 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 diffisXOR(int n){
   int count = 0;
   for (int i = 0; i <= x; i++){
      if((x-i)==(i^x))
         { count++; }
   }
   return count;
}
int main(){
   int N = 15;
   int nums=diffisXOR(N);
   cout <<endl<<"Count of numbers whose difference with N == XOR with N: "<<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 difference with N == XOR with N: 16