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

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:  
Initialize an empty vector.Traverse the array form left to right and check the set bits of each element.Use, C++ inbuilt function __builtin_popcount() to count setbits.Push the elements with K setbits into the vector.Finally find XOR of all the elements of the vector.
Initialize an empty vector.
Traverse the array form left to right and check the set bits of each element.
Use, C++ inbuilt function __builtin_popcount() to count setbits.
Push the elements with K setbits into the vector.
Finally find XOR of all the elements of the vector.
Below is the implementation of the above approach:  
C++
Java
Python3
C#
Javascript
// C++ program to find Xor// of all elements with set bits// equal to K#include <bits/stdc++.h>using namespace std; // Function to find Xor// of desired elementsint 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 codeint 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 program to find Xor// of all elements with set bits// equal to Kimport java.util.*; class GFG{     // Function to find Xor    // of desired elements    static int xorGivenSetBits(int arr[],                                int n, int k)    {        // Initialize vector        Vector<Integer> 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
# Python 3 program to find Xor of all# elements with set bits equal to K # Function to find Xor of desired elementsdef 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 codeif __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# program to find Xor// of all elements with set bits// equal to Kusing System;using System.Collections;using System.Linq; class GFG{     // Function to find Xor// of desired elementsstatic 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 codestatic 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
<script> // Javascript program to find Xor// of all elements with set bits// equal to K // Function to find Xor// of desired elementsfunction xorGivenSetBits(arr, n, k){    // Initialize vector    let v = [];     for (let i = 0; i < n; i++) {        if (bitcount(arr[i]) == k) {            // push required elements            v.push(arr[i]);        }    }     // Initialize result with first    // element of vector    let result = v[0];     for (let i = 1; i < v.length; i++)        result = result ^ v[i];     return result;} function bitcount(n){  var count = 0;  while (n)  {    count += n & 1;    n >>= 1;  }  return count;} // Driver code    let arr = [ 2, 13, 1, 19, 7 ];    let n = arr.length;    let k = 3;     document.write(xorGivenSetBits(arr, n, k)); </script>
25
 
SURENDRA_GANGWAR
Mithun Kumar
Rajput-Ji
souravmahato348
Bitwise-XOR
setBitCount
Arrays
Bit Magic
Arrays
Bit Magic
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Introduction to Data Structures
Window Sliding Technique
Search, insert and delete in an unsorted array
What is Data Structure: Types, Classifications and Applications
Next Greater Element
Bitwise Operators in C/C++
Left Shift and Right Shift Operators in C/C++
Travelling Salesman Problem | Set 1 (Naive and Dynamic Programming)
Count set bits in an integer
How to swap two numbers without using a temporary variable?