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 :4Explanation :There numbers which are multiple of their setbits count are { 1, 2, 4, 6 }.Input :arr[] = {10, 20, 30, 40}Output :3Explanation :There numbers which are multiple of their setbits count are { 10, 20, 40 }

**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 <bits/stdc++.h>` `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)

Want to learn from the best curated videos and practice problems, check out the

**C++ Foundation Course**for Basic to Advanced C++ and**C++ STL Course**for the language and STL. To complete your preparation from learning a language to DS Algo and many more, please refer**Complete Interview Preparation Course****.**