VOOZH about

URL: https://www.geeksforgeeks.org/dsa/equal-sum-xor/

⇱ Equal Sum and XOR - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Equal Sum and XOR

Last Updated : 4 Oct, 2021

Given a positive integer n, find count of positive integers i such that 0 <= i <= n and n+i = n^i 

Examples : 

Input : n = 7
Output : 1
Explanation:
7^i = 7+i holds only for only for i = 0
7+0 = 7^0 = 7

Input: n = 12
Output: 4
12^i = 12+i hold only for i = 0, 1, 2, 3
for i=0, 12+0 = 12^0 = 12
for i=1, 12+1 = 12^1 = 13
for i=2, 12+2 = 12^2 = 14
for i=3, 12+3 = 12^3 = 15
Recommended Practice

Method 1 (Simple) : 
One simple solution is to iterate over all values of i 0<= i <= n and count all satisfying values.  

Output: 

4

Time Complexity: O(n)

Space Complexity: O(1)

Method 2 (Efficient) : 
An efficient solution is as follows

we know that (n+i)=(n^i)+2*(n&i)
So n + i = n ^ i implies n & i = 0
Hence our problem reduces to finding values of i such that n & i = 0. How to find count of such pairs? We can use the count of unset-bits in the binary representation of n. For n & i to be zero, i must unset all set-bits of n. If the kth bit is set at a particular in n, kth bit in i must be 0 always, else kth bit of i can be 0 or 1
Hence, total such combinations are 2^(count of unset bits in n)
For example, consider n = 12 (Binary representation : 1 1 0 0). 
All possible values of i that can unset all bits of n are 0 0 0/1 0/1 where 0/1 implies either 0 or 1. Number of such values of i are 2^2 = 4. 

The following is the program following the above idea.  

Output : 

4

Time Complexity: O(log(n))

Space Complexity: O(1)

https://www.youtube.com/watch?v=zhu605v9KOI&feature=youtu.be

Comment
Article Tags:
Article Tags: