# Product of count of set bits present in binary representations of elements in an array

Given an array **arr[]** consisting of **N **integers, the task is to find the product of the count of set bits in the binary representation of every array element.

**Examples:**

Input:arr[] = {3, 2, 4, 1, 5}Output:4Explanation:

Binary representation of the array elements are {3, 2, 4, 1, 5} are {“11”, “10”, “100”, “1”, “101”} respectively.

Therefore, the product of count of set bits = (2 * 1 * 1 * 1 * 2) = 4.

Input:arr[] = {10, 11, 12}Output:12

**Approach:** The given problem can be solved by counting the total bits in the binary representation of every array element. Follow the steps below to solve the problem:

- Initialize a variable, say
**product**, to store the resultant product. - Traverse the given array
**arr[]**and perform the following steps:- Find the count of set bits of an integer
**arr[i]**and store it in a variable say**bits**. - Update the value of the
**product**as**product*bits**.

- Find the count of set bits of an integer
- After completing the above steps, print the value of the
**product**as the result.

Below is the implementation of the above approach:

## C++

`// C++ program for the above approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to count the` `// set bits in an integer` `int` `countbits(` `int` `n)` `{` ` ` `// Stores the count of set bits` ` ` `int` `count = 0;` ` ` `// Iterate while N is not equal to 0` ` ` `while` `(n != 0) {` ` ` `// Increment count by 1` ` ` `if` `(n & 1)` ` ` `count++;` ` ` `// Divide N by 2` ` ` `n = n / 2;` ` ` `}` ` ` `// Return the total count obtained` ` ` `return` `count;` `}` `// Function to find the product` `// of count of set bits present` `// in each element of an array` `int` `BitProduct(` `int` `arr[], ` `int` `N)` `{` ` ` `// Stores the resultant product` ` ` `int` `product = 1;` ` ` `// Traverse the array arr[]` ` ` `for` `(` `int` `i = 0; i < N; i++) {` ` ` `// Stores the count` ` ` `// of set bits of arr[i]` ` ` `int` `bits = countbits(arr[i]);` ` ` `// Update the product` ` ` `product *= bits;` ` ` `}` ` ` `// Return the resultant product` ` ` `return` `product;` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `arr[] = { 3, 2, 4, 1, 5 };` ` ` `int` `N = ` `sizeof` `(arr) / ` `sizeof` `(arr[0]);` ` ` `cout << BitProduct(arr, N);` ` ` `return` `0;` `}` |

## Java

`// java program for the above approach` `import` `java.io.*;` `import` `java.lang.*;` `import` `java.util.*;` `public` `class` `GFG {` ` ` `// Function to count the` ` ` `// set bits in an integer` ` ` `static` `int` `countbits(` `int` `n)` ` ` `{` ` ` `// Stores the count of set bits` ` ` `int` `count = ` `0` `;` ` ` `// Iterate while N is not equal to 0` ` ` `while` `(n != ` `0` `) {` ` ` `// Increment count by 1` ` ` `if` `((n & ` `1` `) != ` `0` `)` ` ` `count++;` ` ` `// Divide N by 2` ` ` `n = n / ` `2` `;` ` ` `}` ` ` `// Return the total count obtained` ` ` `return` `count;` ` ` `}` ` ` `// Function to find the product` ` ` `// of count of set bits present` ` ` `// in each element of an array` ` ` `static` `int` `BitProduct(` `int` `arr[], ` `int` `N)` ` ` `{` ` ` ` ` `// Stores the resultant product` ` ` `int` `product = ` `1` `;` ` ` `// Traverse the array arr[]` ` ` `for` `(` `int` `i = ` `0` `; i < N; i++) {` ` ` `// Stores the count` ` ` `// of set bits of arr[i]` ` ` `int` `bits = countbits(arr[i]);` ` ` `// Update the product` ` ` `product *= bits;` ` ` `}` ` ` `// Return the resultant product` ` ` `return` `product;` ` ` `}` ` ` `// Driver Code` ` ` `public` `static` `void` `main(String[] args)` ` ` `{` ` ` `int` `arr[] = { ` `3` `, ` `2` `, ` `4` `, ` `1` `, ` `5` `};` ` ` `int` `N = arr.length;` ` ` `System.out.print(BitProduct(arr, N));` ` ` `}` `}` `// This code is contributed by Kingash.` |

## Python3

`# Python3 program for the above approach` `# Function to count the` `# set bits in an integer` `def` `countbits(n):` ` ` ` ` `# Stores the count of set bits` ` ` `count ` `=` `0` ` ` `# Iterate while N is not equal to 0` ` ` `while` `(n !` `=` `0` `):` ` ` `# Increment count by 1` ` ` `if` `(n & ` `1` `):` ` ` `count ` `+` `=` `1` ` ` `# Divide N by 2` ` ` `n ` `=` `n ` `/` `/` `2` ` ` `# Return the total count obtained` ` ` `return` `count` `# Function to find the product` `# of count of set bits present` `# in each element of an array` `def` `BitProduct(arr, N):` ` ` ` ` `# Stores the resultant product` ` ` `product ` `=` `1` ` ` `# Traverse the array arr[]` ` ` `for` `i ` `in` `range` `(N):` ` ` ` ` `# Stores the count` ` ` `# of set bits of arr[i]` ` ` `bits ` `=` `countbits(arr[i])` ` ` `# Update the product` ` ` `product ` `*` `=` `bits` ` ` `# Return the resultant product` ` ` `return` `product` `# Driver Code` `if` `__name__ ` `=` `=` `'__main__'` `:` ` ` `arr ` `=` `[` `3` `, ` `2` `, ` `4` `, ` `1` `, ` `5` `]` ` ` `N ` `=` `len` `(arr)` ` ` `print` `(BitProduct(arr, N))` ` ` `# This code is contributed by mohit kumar 29.` |

## C#

`// C# program for the above approach` `using` `System;` `public` `class` `GFG {` ` ` `// Function to count the` ` ` `// set bits in an integer` ` ` `static` `int` `countbits(` `int` `n)` ` ` `{` ` ` `// Stores the count of set bits` ` ` `int` `count = 0;` ` ` `// Iterate while N is not equal to 0` ` ` `while` `(n != 0) {` ` ` `// Increment count by 1` ` ` `if` `((n & 1) != 0)` ` ` `count++;` ` ` `// Divide N by 2` ` ` `n = n / 2;` ` ` `}` ` ` `// Return the total count obtained` ` ` `return` `count;` ` ` `}` ` ` `// Function to find the product` ` ` `// of count of set bits present` ` ` `// in each element of an array` ` ` `static` `int` `BitProduct(` `int` `[] arr, ` `int` `N)` ` ` `{` ` ` `// Stores the resultant product` ` ` `int` `product = 1;` ` ` `// Traverse the array arr[]` ` ` `for` `(` `int` `i = 0; i < N; i++) {` ` ` `// Stores the count` ` ` `// of set bits of arr[i]` ` ` `int` `bits = countbits(arr[i]);` ` ` `// Update the product` ` ` `product *= bits;` ` ` `}` ` ` `// Return the resultant product` ` ` `return` `product;` ` ` `}` ` ` `// Driver Code` ` ` `public` `static` `void` `Main(` `string` `[] args)` ` ` `{` ` ` `int` `[] arr = { 3, 2, 4, 1, 5 };` ` ` `int` `N = arr.Length;` ` ` `Console.Write(BitProduct(arr, N));` ` ` `}` `}` `// This code is contributed by ukasp.` |

## Javascript

`<script>` `// Javascript program for the above approach` `// Function to count the` `// set bits in an integer` `function` `countbits( n)` `{` ` ` `// Stores the count of set bits` ` ` `let count = 0;` ` ` `// Iterate while N is not equal to 0` ` ` `while` `(n != 0) {` ` ` `// Increment count by 1` ` ` `if` `((n & 1) != 0)` ` ` `count++;` ` ` `// Divide N by 2` ` ` `n = Math.floor(n / 2);` ` ` `}` ` ` `// Return the total count obtained` ` ` `return` `count;` `}` `// Function to find the product` `// of count of set bits present` `// in each element of an array` `function` `BitProduct( arr, N)` `{` ` ` `// Stores the resultant product` ` ` `let product = 1;` ` ` `// Traverse the array arr[]` ` ` `for` `(let i = 0; i < N; i++) {` ` ` `// Stores the count` ` ` `// of set bits of arr[i]` ` ` `let bits = countbits(arr[i]);` ` ` `// Update the product` ` ` `product *= bits;` ` ` `}` ` ` `// Return the resultant product` ` ` `return` `product;` `}` `// Driver Code` `let arr = [ 3, 2, 4, 1, 5 ];` `let N = arr.length;` `document.write(BitProduct(arr, N));` `</script>` |

**Output:**

4

**Time Complexity:** O(N * log M), M is the *maximum element of the array**.***Auxiliary Space:** 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. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend **live classes **with experts, please refer **DSA Live Classes for Working Professionals **and **Competitive Programming Live for Students**.