# XOR of all elements of array with set bits equal to K

• Difficulty Level : Basic
• Last Updated : 29 Apr, 2021

Given an array of integers and a number K. The task is to find the XOR of only those elements of the array whose total set bits are equal to K.
Examples

```Input : arr[] = {1, 22, 3, 10}, K=1
Output : 1
Elements with set bits equal to 1 is 1.
So, XOR is also 1.

Input : arr[] = {3, 4, 10, 5, 8}, K=2
Output : 12```

Approach:

1. Initialize an empty vector.
2. Traverse the array form left to right and check the set bits of each element.
3. Use, C++ inbuilt function __builtin_popcount() to count setbits.
4. Push the elements with K setbits into the vector.
5. Finally find XOR of all the elements of the vector.

Below is the implementation of the above approach:

## C++

 `// C++ program to find Xor` `// of all elements with set bits` `// equal to K` `#include ` `using` `namespace` `std;`   `// Function to find Xor` `// of desired elements` `int` `xorGivenSetBits(``int` `arr[], ``int` `n, ``int` `k)` `{` `    ``// Initialize vector` `    ``vector<``int``> v;`   `    ``for` `(``int` `i = 0; i < n; i++) {` `        ``if` `(__builtin_popcount(arr[i]) == k) {` `            ``// push required elements` `            ``v.push_back(arr[i]);` `        ``}` `    ``}`   `    ``// Initialize result with first element of vector` `    ``int` `result = v[0];`   `    ``for` `(``int` `i = 1; i < v.size(); i++)` `        ``result = result ^ v[i];`   `    ``return` `result;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `arr[] = { 2, 13, 1, 19, 7 };` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);` `    ``int` `k = 3;`   `    ``cout << xorGivenSetBits(arr, n, k);`   `    ``return` `0;` `}`

## Java

 `// Java program to find Xor` `// of all elements with set bits` `// equal to K` `import` `java.util.*;`   `class` `GFG` `{`   `    ``// Function to find Xor` `    ``// of desired elements` `    ``static` `int` `xorGivenSetBits(``int` `arr[], ` `                                ``int` `n, ``int` `k)` `    ``{` `        ``// Initialize vector` `        ``Vector v = ``new` `Vector<>();`   `        ``for` `(``int` `i = ``0``; i < n; i++) ` `        ``{` `            ``if` `(Integer.bitCount(arr[i]) == k)` `            ``{` `                ``// push required elements` `                ``v.add(arr[i]);` `            ``}` `        ``}`   `        ``// Initialize result with first element of vector` `        ``int` `result = v.get(``0``);`   `        ``for` `(``int` `i = ``1``; i < v.size(); i++) ` `        ``{` `            ``result = result ^ v.get(i);` `        ``}`   `        ``return` `result;` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `main(String[] args) ` `    ``{` `        ``int` `arr[] = {``2``, ``13``, ``1``, ``19``, ``7``};` `        ``int` `n = arr.length;` `        ``int` `k = ``3``;` `        ``System.out.println(xorGivenSetBits(arr, n, k));` `    ``}` `}`   `// This code contributed by Rajput-Ji`

## Python3

 `# Python 3 program to find Xor of all ` `# elements with set bits equal to K`   `# Function to find Xor of desired elements` `def` `xorGivenSetBits(arr, n, k):` `    `  `    ``# Initialize vector` `    ``v ``=` `[]` `    ``for` `i ``in` `range``(``0``, n, ``1``):` `        ``if` `(``bin``(arr[i]).count(``'1'``) ``=``=` `k):` `            `  `            ``# push required elements` `            ``v.append(arr[i])` `        `  `    ``# Initialize result with first ` `    ``# element of vector` `    ``result ``=` `v[``0``]`   `    ``for` `i ``in` `range``(``1``, ``len``(v), ``1``):` `        ``result ``=` `result ^ v[i]`   `    ``return` `result`   `# Driver code` `if` `__name__ ``=``=` `'__main__'``:` `    ``arr ``=` `[``2``, ``13``, ``1``, ``19``, ``7``]` `    ``n ``=` `len``(arr)` `    ``k ``=` `3`   `    ``print``(xorGivenSetBits(arr, n, k))`   `# This code is contributed by` `# Surendra_Gangwar`

## C#

 `// C# program to find Xor` `// of all elements with set bits` `// equal to K` `using` `System;` `using` `System.Collections;` `using` `System.Linq;`   `class` `GFG` `{` `    `  `// Function to find Xor` `// of desired elements` `static` `int` `xorGivenSetBits(``int` `[]arr, ``int` `n, ``int` `k)` `{` `    ``// Initialize vector` `    ``ArrayList v=``new` `ArrayList();`   `    ``for` `(``int` `i = 0; i < n; i++) ` `    ``{` `        ``if` `(Convert.ToString(arr[i], 2).Count(c => c == ``'1'``) == k) ` `        ``{` `            ``// push required elements` `            ``v.Add(arr[i]);` `        ``}` `    ``}`   `    ``// Initialize result with first element of vector` `    ``int` `result = (``int``)v[0];`   `    ``for` `(``int` `i = 1; i < v.Count; i++)` `        ``result = result ^ (``int``)v[i];`   `    ``return` `result;` `}`   `// Driver code` `static` `void` `Main()` `{` `    ``int` `[]arr = { 2, 13, 1, 19, 7 };` `    ``int` `n = arr.Length;` `    ``int` `k = 3;`   `    ``Console.WriteLine(xorGivenSetBits(arr, n, k));` `}` `}`   `// This code is contributed by mits`

## Javascript

 ``

Output:

`25`

My Personal Notes arrow_drop_up
Recommended Articles
Page :