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

Đếm các số nhỏ hơn có XOR với n tạo ra giá trị lớn hơn trong C ++

Chúng tôi được cung cấp một số nguyên, giả sử là num và nhiệm vụ là đếm các số nhỏ hơn num mà XOR với num 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 num =11

Đầu ra - Đếm các số nhỏ hơn mà XOR với n tạo ra giá trị lớn hơn là - 4

Giải thích -

Chúng ta được đưa ra với num là 11, có nghĩa là chúng ta cần tìm XOR của num với các số nhỏ hơn num. 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 num =12

Đầu ra - Đếm các số nhỏ hơn mà XOR với n tạo ra giá trị lớn hơn là - 3

Giải thích -

Chúng ta được đưa ra với num là 12, có nghĩa là chúng ta cần tìm XOR của num với các số nhỏ hơn num. 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 là num.

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

  • Tạo một số biến tạm thời để lưu trữ kết quả.

  • Bắt đầu vòng lặp WHILE cho đến num> 0

  • Bên trong vòng lặp, kiểm tra IF num &1 ==TRUE, sau đó đặt số đếm là count + pow (2, temp)

  • Tăng giá trị của nhiệt độ lên 1

  • Và đặt num thành num>> =1

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

  • In kết quả

Ví dụ

#include
using namespace std;
//Count smaller numbers whose XOR with n produces greater value
int XOR_greater(int n){
   int temp = 0;
   int count = 0;
   while (n > 0){
      if ((n&1) == 0){
         count += pow(2, temp);
      }
      temp++;
      n >>= 1;
   }
   return count;
}
int main(){
   int n = 20;
   cout<<"Count of smaller numbers whose XOR with n produces greater value are: "<<XOR_greater(n) << endl;
   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 numbers whose XOR with n produces greater value are: 11