Given a range [L, R], the task is to find a pair (X, Y), not necessarily distinct. Find the maximum possible value of the bitwise AND of the chosen integers.
Input: L = 3, R = 7
In all the possible pairs, pair (7, 7) gives the maximum value for bitwise AND.
Input: L = 54, R = 55
In all the possible pairs, pair (55, 55) gives the maximum value for bitwise AND.
Naive Approach: To solve the problem mentioned above the naive method is to iterate from L to R and check the bitwise AND for every possible pair and print the maximum value in the end.
Time Complexity: O(N2)
To optimize the above method we have to observe that here we have to integers L and R and we have to select two integers from the interval [L, R] so that their bitwise AND should be maximum. Bitwise AND of any two numbers between L and R will be always less than or equal to R only. So if we have to select two integers from the interval, we can choose the integers to be R and that’s the only way to maximize the bitwise AND.
Below is the implementation of above approach:
Time Complexity: O(1)
Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.