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: 0
(123 ^ 123) = 0
Naive approach: Simply run a for loop and xor N, K times.
Below is the implementation of the above approach:
// 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 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 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# 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. |
<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> |
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++ 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 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 |
# 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# 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 |
<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> |
123
Time Complexity: O(1)
Space Complexity: O(1)