Given a number N. The task is to count the all possible values of x such that nx is equal to (N-x), where denotes bitwise XOR operation.
Input: N = 3 Output: 4 The all possible values of x are respectively 0, 1, 2, 3. Input: N = 6 Output: 4 The all possible values of x are respectively 0, 2, 4, 6.
Approach: The XOR value of two bits will be 1 if both bits have opposite sign, and 0 when both bits are same. So on the basis of the property of XOR, we can say that n x is always greater than or equal to n-x. The only condition when its value is equal with n-x is bits of x form a subset of bits of n. Because if in the i’th position both x and n has set bits then after xor the value will decrease, and the decreased value will be , where i is 0-based position.
So the answer is the total count of subsets of bits of number n is , where k is the count of set bits in n.
Below is the implementation of above approach:
Time Complexity: O(k), where k is number of set bits in N.
- Count numbers whose XOR with N is equal to OR with N
- Count numbers whose sum with x is equal to XOR with x
- Count different numbers that can be generated such that there digits sum is equal to 'n'
- Count pairs of natural numbers with GCD equal to given number
- Count total number of N digit numbers such that the difference between sum of even and odd digits is 1
- Count numbers with difference between number and its digit sum greater than specific value
- Maximum count of equal numbers in an array after performing given operations
- Count pairs from two arrays having sum equal to K
- Count number of equal pairs in a string
- Count minimum bits to flip such that XOR of A and B equal to C
- Count number of integers less than or equal to N which has exactly 9 divisors
- Absolute difference between the Product of Non-Prime numbers and Prime numbers of an Array
- Count ways of choosing a pair with maximum difference
- Count pairs in an array such that both elements has equal set bits
- Numbers having difference with digit sum more than s
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.