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

Đếm các giá trị nhỏ hơn có XOR với x lớn hơn x trong C ++

Chúng tôi được cung cấp một số nguyên, giả sử là x và nhiệm vụ là đếm các số nhỏ hơn x mà XOR với x sẽ dẫn đến giá trị lớn hơn giá trị XOR.

Bảng sự thật cho hoạt động XOR được đưa ra bên dưới

A B A XOR B
0 0 0
1 0 1
0 1 1
1 1 0

Đầu vào - int x =11

Đầu ra - Đếm các giá trị nhỏ hơn có XOR với x lớn hơn x là - 4

Giải thích -

Chúng ta được cho với x là 11, nghĩa là chúng ta cần tìm XOR của x với các số nhỏ hơn x. Vì vậy, các số là 1 XOR 11 <11 (FALSE), 2 XOR 11 <11 (FALSE), 3 XOR 11 <11 (FALSE), 4 XOR 11> 11 (TRUE), 5 XOR 11> 11 (TRUE), 6 XOR 11> 11 (TRUE), 7 XOR 11> 11 (TRUE), 8 XOR 11 <11 (FALSE), 9 XOR 11 <11 (FALSE), 10 XOR 11 <11 (FALSE).

Đầu vào -:int x =12

Đầu ra - Đếm các giá trị nhỏ hơn có XOR với x lớn hơn x là - 11

Giải thích -

Chúng ta được cho với x là 12 có nghĩa là chúng ta cần tìm XOR của x với các số nhỏ hơn x. Vì vậy, các số là 1 XOR 12> 12 (TRUE), 2 XOR 12> 12 (TRUE), 3 XOR 12> 12 (TRUE), 4 XOR 12 <12 (FALSE), 5 XOR 12 <12 (FALSE), 6 XOR 12 <12 (FALSE), 7 XOR 12 <12 (FALSE), 8 XOR 12 <12 (FALSE), 9 XOR 12 <12 (FALSE), 10 XOR 12 <12 (FALSE), 11 XOR 12 <12 ( SAI).

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Nhập một phần tử số nguyên và lưu trữ nó trong một biến có tên x.

  • Chuyển giá trị của num cho hàm để xử lý thêm

  • Tạo một số đếm biến tạm thời để lưu trữ kết quả và một biến có tên là num và đặt nó thành 1.

  • Bắt đầu vòng lặp WHILE cho đến x! =0

  • Bên trong vòng lặp, hãy kiểm tra IF x% 2 ==0, sau đó đặt số lượng là count + num

  • Đặt num là num * 2 và x là x / 2

  • Trả lại số lượng

  • In kết quả

Ví dụ

#include
using namespace std;
int XOR_smaller(int x){
   int count = 0;
   int num = 1;
   while (x != 0){
      if (x%2 == 0){
         count = count + num;
      }
      num = num*2;
      x = x/2;
   }
   return count;
}
int main(){
   int x = 20;
   cout<<"Count of smaller values whose XOR with x is greater than x are: "<<XOR_smaller(x);
   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 smaller values whose XOR with x is greater than x are: 11