VOOZH about

URL: https://www.geeksforgeeks.org/dsa/find-smallest-number-n-n-xor-n1-equals-given-k/

⇱ Find smallest number n such that n XOR n+1 equals to given k. - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Find smallest number n such that n XOR n+1 equals to given k.

Last Updated : 25 Feb, 2023

You are given a positive number k, we need to find a positive integer n, such that XOR of n and n+1 is equal to k. If no such n exist then print -1.
Examples: 
 

Input : 3
Output : 1

Input : 7
Output : 3

Input : 6
Output : -1


 

Recommended Practice


Below are two cases when we do n XOR (n+1) for a number n.
Case 1 : n is even. Last bit of n is 0 and last bit of (n+1) is 1. Rest of the bits are same in both. So XOR would always be 1 if n is even.
Case : n is odd Last bit in n is 1. And in n+1, last bit is 0. But in this case there may be more bits which differ due to carry. The carry continues to propagate to left till we find first 0 bit. So n XOR n+1 will we 2^i-1 where i is the position of first 0 bit in n from left. So, we can say that if k is of form 2^i-1 then we will have our answer as k/2.
Finally our steps are: 
 

If we have k=1, answer = 2 [We need smallest positive n]
Else If k is of form 2^i-1, answer = k/2,
else, answer = -1


 

Output: 
 

15

Time Complexity : O(1)

Auxiliary Space : O(1)


 

Comment
Article Tags: