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

Cặp Bitwise AND tối đa từ dải ô đã cho trong C ++

Tuyên bố vấn đề

Cho một phạm vi [L, R], nhiệm vụ là tìm một cặp (X, Y) sao cho L ≤ X

Ví dụ

Nếu L =1 và R =10 thì giá trị AND theo chiều bit tối đa là 8 có thể được hình thành như sau -

1000 # Binary representation of 8
Bitwise AND
1001 # Binary representation of 9
----
1000 # Final result

Thuật toán

Lặp lại từ L đến R và kiểm tra bitwise AND cho mọi cặp có thể và in giá trị lớn nhất ở cuối

Ví dụ

Bây giờ chúng ta hãy xem một ví dụ -

#include <bits/stdc++.h>
using namespace std;
int getMaxBitwiseAndValue(int L, int R) {
   int maxValue = L & R;
   for (int i = L; i < R; ++i) {
      for (int j = i + 1; j <= R; ++j) {
         maxValue = max(maxValue, (i & j));
      }
   }
   return maxValue;
}
int main() {
   int L = 1, R = 10;
   cout << "Maximum value = " << getMaxBitwiseAndValue(L, R) << endl;
   return 0;
}

Đầu ra

Maximum value = 8