# Count integers in an Array which are multiples their bits counts

Given an array arr[] of N elements, the task is to count all the elements which are a multiple of their set bits count.

Examples:

```Input : arr[] = { 1, 2, 3, 4, 5, 6 }
Output : 4
Explanation :
There numbers which are multiple of their setbits count are { 1, 2, 4, 6 }.

Input : arr[] = {10, 20, 30, 40}
Output : 3
Explanation :
There numbers which are multiple of their setbits count are { 10, 20, 40 }
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Loop through each array elements one by one. Count the set bits of every number in the array. Check if the current integer is a multiple of its set bits count or not. If ‘yes’ then increment the counter by 1, else skip that integer.

Below is the implementation of above approach:

## C++

 `#include ` `using` `namespace` `std; ` ` `  `// Function to find the count of numbers ` `// which are multiple of its set bits count ` `int` `find_count(vector<``int``>& arr) ` `{ ` `    ``// variable to store count ` `    ``int` `ans = 0; ` ` `  `    ``// iterate over elements of array ` `    ``for` `(``int` `i : arr) { ` ` `  `        ``// Get the set-bits count of each element ` `        ``int` `x = __builtin_popcount(i); ` ` `  `        ``// Check if the setbits count ` `        ``// divides the integer i ` `        ``if` `(i % x == 0) ` ` `  `            ``// Increment the count ` `            ``// of required numbers by 1 ` `            ``ans += 1; ` `    ``} ` ` `  `    ``return` `ans; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``vector<``int``> arr ` `        ``= { 1, 2, 3, 4, 5, 6 }; ` ` `  `    ``cout << find_count(arr); ` ` `  `    ``return` `0; ` `} `

## Java

 `class` `GFG{ ` `  `  `// Function to find the count of numbers ` `// which are multiple of its set bits count ` `static` `int` `find_count(``int` `[]arr) ` `{ ` `    ``// variable to store count ` `    ``int` `ans = ``0``; ` `  `  `    ``// iterate over elements of array ` `    ``for` `(``int` `i : arr) { ` `  `  `        ``// Get the set-bits count of each element ` `        ``int` `x = Integer.bitCount(i); ` `  `  `        ``// Check if the setbits count ` `        ``// divides the integer i ` `        ``if` `(i % x == ``0``) ` `  `  `            ``// Increment the count ` `            ``// of required numbers by 1 ` `            ``ans += ``1``; ` `    ``} ` `  `  `    ``return` `ans; ` `} ` `  `  `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``int` `[]arr ` `        ``= { ``1``, ``2``, ``3``, ``4``, ``5``, ``6` `}; ` `  `  `    ``System.out.print(find_count(arr)); ` `  `  `} ` `} ` ` `  `// This code contributed by Princi Singh `

## Python3

 `# Python3 implementation of above approach ` ` `  `# function to return set bits count ` `def` `bitsoncount(x): ` `    ``return` `bin``(x).count(``'1'``) ` ` `  `# Function to find the count of numbers  ` `# which are multiple of its set bits count  ` `def` `find_count(arr) : ` `    ``# variable to store count  ` `    ``ans ``=` `0`  ` `  `    ``# iterate over elements of array  ` `    ``for` `i ``in` `arr : ` ` `  `        ``# Get the set-bits count of each element  ` `        ``x ``=` `bitsoncount(i) ` ` `  `        ``# Check if the setbits count  ` `        ``# divides the integer i  ` `        ``if` `(i ``%` `x ``=``=` `0``): ` ` `  `            ``# Increment the count  ` `            ``# of required numbers by 1  ` `            ``ans ``+``=` `1` ` `  `    ``return` `ans ` ` `  `# Driver code  ` `arr ``=` `[ ``1``, ``2``, ``3``, ``4``, ``5``, ``6` `] ` ` `  `print``(find_count(arr)) ` ` `  `# This code is contributed by Sanjit_Prasad `

## C#

 `using` `System; ` ` `  `public` `class` `GFG{ ` `   `  `// Function to find the count of numbers ` `// which are multiple of its set bits count ` `static` `int` `find_count(``int` `[]arr) ` `{ ` `    ``// Variable to store count ` `    ``int` `ans = 0; ` `   `  `    ``// Iterate over elements of array ` `    ``foreach` `(``int` `i ``in` `arr) { ` `   `  `        ``// Get the set-bits count of each element ` `        ``int` `x = bitCount(i); ` `   `  `        ``// Check if the setbits count ` `        ``// divides the integer i ` `        ``if` `(i % x == 0) ` `   `  `            ``// Increment the count ` `            ``// of required numbers by 1 ` `            ``ans += 1; ` `    ``} ` `   `  `    ``return` `ans; ` `} ` `static` `int` `bitCount(``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 ` `        ``= { 1, 2, 3, 4, 5, 6 }; ` `   `  `    ``Console.Write(find_count(arr)); ` `   `  `} ` `} ` `// This code contributed by Princi Singh `

Output :

`4`

Time complexity:- O(nlog(max(arr[])), where n is the size of the array,
Space complexity:- O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.