Open In App

Find the value of N XOR’ed to itself K times

Last Updated : 06 Sep, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

Given two integer N and K, the task is to find the value of N XOR N XOR N XOR N … XOR N (K times).

Examples:  

Input: N = 123, K = 3 
Output: 123 
(123 ^ 123 ^ 123) = 123
Input: N = 123, K = 2 
Output:
(123 ^ 123) = 0  

Naive approach: Simply run a for loop and xor N, K times.

Below is the implementation of the above approach: 

C++




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return n ^ n ^ ... k times
int xorK(int n, int k)
{
 
    // Find the result
    int res = n;
    for (int i = 1; i < k; i++)
        res = (res ^ n);
    return res;
}
 
// Driver code
int main()
{
    int n = 123, k = 3;
 
    cout << xorK(n, k);
 
    return 0;
}


Java




// Java implementation of the approach
class GFG
{
 
// Function to return n ^ n ^ ... k times
static int xorK(int n, int k)
{
 
    // Find the result
    int res = n;
    for (int i = 1; i < k; i++)
        res = (res ^ n);
    return n;
}
 
// Driver code
public static void main(String[] args)
{
    int n = 123, k = 3;
 
    System.out.print(xorK(n, k));
}
}
 
// This code is contributed by 29AjayKumar


Python3




# Python3 implementation of the approach
 
# Function to return n ^ n ^ ... k times
def xorK(n, k):
 
    # Find the result
    res = n
    for i in range(1, k):
        res = (res ^ n)
    return n
 
# Driver code
n = 123
k = 3
 
print(xorK(n, k))
 
# This code is contributed by Mohit Kumar


C#




// C# implementation of the approach
using System;
 
class GFG
{
     
// Function to return n ^ n ^ ... k times
static int xorK(int n, int k)
{
 
    // Find the result
    int res = n;
    for (int i = 1; i < k; i++)
        res = (res ^ n);
    return n;
}
 
// Driver code
static public void Main ()
{
    int n = 123, k = 3;
     
    Console.Write(xorK(n, k));
}
}
 
// This code is contributed by ajit.


Javascript




<script>
 
// JavaSCript implementation of the approach
 
// Function to return n ^ n ^ ... k times
function xorK(n, k)
{
 
    // Find the result
    let res = n;
    for (let i = 1; i < k; i++)
        res = (res ^ n);
    return n;
}
 
// Driver code
 
    let n = 123, k = 3;
 
    document.write(xorK(n, k));
 
// This code is contributed by Surbhi Tyagi.
 
</script>


Output: 

123

 

Time Complexity: O(K) 
Space Complexity: O(1)

Efficient approach: From the properties X XOR X = 0 and X ^ 0 = X, it can be observed that when K is odd then the answer will be N itself else the answer will be 0.
Below is the implementation of the above approach: 
 

C++




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return n ^ n ^ ... k times
int xorK(int n, int k)
{
 
    // If k is odd the answer is
    // the number itself
    if (k % 2 == 1)
        return n;
 
    // Else the answer is 0
    return 0;
}
 
// Driver code
int main()
{
    int n = 123, k = 3;
 
    cout << xorK(n, k);
 
    return 0;
}


Java




// Java implementation of the approach
class GFG
{
 
// Function to return n ^ n ^ ... k times
static int xorK(int n, int k)
{
 
    // If k is odd the answer is
    // the number itself
    if (k % 2 == 1)
        return n;
 
    // Else the answer is 0
    return 0;
}
 
// Driver code
public static void main(String[] args)
{
    int n = 123, k = 3;
 
    System.out.print(xorK(n, k));
}
}
 
// This code is contributed by PrinciRaj1992


Python3




# Python implementation of the approach
 
# Function to return n ^ n ^ ... k times
def xorK(n, k):
     
    # If k is odd the answer is
    # the number itself
    if (k % 2 == 1):
        return n
 
    # Else the answer is 0
    return 0
 
# Driver code
n = 123
k = 3
 
print(xorK(n, k))
 
# This code is contributed by Sanjit_Prasad


C#




// C# implementation of the approach
using System;
 
class GFG
{
 
// Function to return n ^ n ^ ... k times
static int xorK(int n, int k)
{
 
    // If k is odd the answer is
    // the number itself
    if (k % 2 == 1)
        return n;
 
    // Else the answer is 0
    return 0;
}
 
// Driver code
public static void Main(String[] args)
{
    int n = 123, k = 3;
 
    Console.Write(xorK(n, k));
}
}
 
// This code is contributed by 29AjayKumar


Javascript




<script>
    // Javascript implementation of the approach
     
    // Function to return n ^ n ^ ... k times
    function xorK(n, k)
    {
 
        // If k is odd the answer is
        // the number itself
        if (k % 2 == 1)
            return n;
 
        // Else the answer is 0
        return 0;
    }
     
    let n = 123, k = 3;
  
    document.write(xorK(n, k));
     
</script>


Output: 

123

 

Time Complexity: O(1) 
Space Complexity: O(1)
 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads