# Count of elements in an Array whose set bits are in a multiple of K

• Last Updated : 12 May, 2021

Given an array arr[] of N elements and an integer K, the task is to count all the elements whose number of set bits is a multiple of K.
Examples:

Input: arr[] = {1, 2, 3, 4, 5}, K = 2
Output:
Explanation:
Two numbers whose setbits count is multiple of 2 are {3, 5}.
Input: arr[] = {10, 20, 30, 40}, K = 4
Output:
Explanation:
There number whose setbits count is multiple of 4 is {30}.

Approach:

1. Traverse the numbers in the array one by one.
2. Count the set bits of every number in the array.
3. Check if the setbits count is a multiple of K or not.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of above approach`   `#include ` `using` `namespace` `std;`   `// Function to find the count of numbers` `int` `find_count(vector<``int``> arr, ``int` `k)` `{`   `    ``int` `ans = 0;` `    ``for` `(``int` `i : arr) {`   `        ``// Get the set-bits count of each element` `        ``int` `x = __builtin_popcount(i);`   `        ``// Check if the setbits count` `        ``// is divisible by K` `        ``if` `(x % k == 0)`   `            ``// Increment the count` `            ``// of required numbers by 1` `            ``ans += 1;` `    ``}`   `    ``return` `ans;` `}`   `// Driver code` `int` `main()` `{` `    ``vector<``int``> arr = { 12, 345, 2, 68, 7896 };` `    ``int` `K = 2;`   `    ``cout << find_count(arr, K);`   `    ``return` `0;` `}`

## Java

 `// Java implementation of above approach`   `class` `GFG{`   `// Function to find the count of numbers` `static` `int` `find_count(``int` `[]arr, ``int` `k)` `{`   `    ``int` `ans = ``0``;` `    ``for` `(``int` `i : arr) {`   `        ``// Get the set-bits count of each element` `        ``int` `x = Integer.bitCount(i);`   `        ``// Check if the setbits count` `        ``// is divisible by K` `        ``if` `(x % k == ``0``)`   `            ``// Increment the count` `            ``// of required numbers by 1` `            ``ans += ``1``;` `    ``}`   `    ``return` `ans;` `}`   `// Driver code` `public` `static` `void` `main(String[] args)` `{` `    ``int` `[]arr = { ``12``, ``345``, ``2``, ``68``, ``7896` `};` `    ``int` `K = ``2``;`   `    ``System.out.print(find_count(arr, K));`   `}` `}`   `// This code is contributed by 29AjayKumar`

## Python3

 `# Python3 implementation of above approach `   `# Function to count total set bits` `def` `bitsoncount(x):` `    ``return` `bin``(x).count(``'1'``)`   `# Function to find the count of numbers ` `def` `find_count(arr, k) :`   `    ``ans ``=` `0` `    ``for` `i ``in` `arr:`   `        ``# Get the set-bits count of each element ` `        ``x ``=` `bitsoncount(i)`   `        ``# Check if the setbits count ` `        ``# is divisible by K ` `        ``if` `(x ``%` `k ``=``=` `0``) :` `            ``# Increment the count ` `            ``# of required numbers by 1 ` `            ``ans ``+``=` `1` `    ``return` `ans`   `# Driver code ` `arr ``=` `[ ``12``, ``345``, ``2``, ``68``, ``7896` `]` `K ``=` `2` `print``(find_count(arr, K))`   `# This code is contributed by Sanjit_Prasad`

## C#

 `// C# implementation of above approach` `using` `System;`   `class` `GFG{`   `// Function to find the count of numbers` `static` `int` `find_count(``int` `[]arr, ``int` `k)` `{` `    ``int` `ans = 0;` `    ``foreach``(``int` `i ``in` `arr)` `    ``{`   `        ``// Get the set-bits count of each element` `        ``int` `x = countSetBits(i);`   `        ``// Check if the setbits count` `        ``// is divisible by K` `        ``if` `(x % k == 0) ` `            `  `            ``// Increment the count` `            ``// of required numbers by 1` `            ``ans += 1;` `    ``}`   `    ``return` `ans;` `}`   `static` `int` `countSetBits(``long` `x)` `{` `    ``int` `setBits = 0;` `    ``while` `(x != 0) ` `    ``{` `        ``x = x & (x - 1);` `        ``setBits++;` `    ``}`   `    ``return` `setBits;` `}`   `// Driver code` `public` `static` `void` `Main(String[] args)` `{` `    ``int` `[]arr = { 12, 345, 2, 68, 7896 };` `    ``int` `K = 2;`   `    ``Console.Write(find_count(arr, K));` `}` `}` `// This code is contributed by sapnasingh4991`

## Javascript

 ``

Output:

`3`

Time complexity: O(N * M), where N is the size of the array, and M is the bits count of the largest number in the array.
Auxiliary Space complexity: O(1)

My Personal Notes arrow_drop_up
Recommended Articles
Page :