![]() |
VOOZH | about |
Given a integer 'x', find the number of values of 'a' satisfying the following conditions:
Examples :
Input : x = 10 Output : 5 Explanation: For x = 10, following 5 values of 'a' satisfy the conditions: 1 XOR 10 = 11 4 XOR 10 = 14 5 XOR 10 = 15 6 XOR 10 = 12 7 XOR 10 = 13 Input : x = 2 Output : 1 Explanation: For x=2, we have just one value 1 XOR 2 = 3.
Naive Approach
A Simple approach is to check for all values of ‘a’ between 0 and ‘x’ and calculate its XOR with x and check if the condition 1 satisfies.
Output :
5
The time complexity of the above approach is O(x).
Auxiliary Space: O(1)
Efficient Approach
The efficient solution lies in the binary representation of the number. We consider all 0's in binary representation. For every 0 at the i-th position, we can have 2i numbers smaller than or equal to x with greater XOR.
Output :
5
Time complexity: O(Log x).
Auxiliary Space: O(1)