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

• Last Updated : 12 May, 2021

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 }```

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`

## Javascript

 ``

Output :

`4`

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

My Personal Notes arrow_drop_up
Recommended Articles
Page :