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 }
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 |
Javascript
<script> // Function to find the count of numbers // which are multiple of its set bits count function find_count(arr) { // Variable to store count var ans = 0; // Iterate over elements of array for ( var i=0;i<=arr.length;i++) { // Get the set-bits count of each element var 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; } function bitCount( x) { var setBits = 0; while (x != 0) { x = x & (x - 1); setBits++; } return setBits; } var arr = [ 1, 2, 3, 4, 5, 6 ]; document.write(find_count(arr)); // This code contributed by SoumikMondal </script> |
Output :
4
Time complexity:- O(nlog(max(arr[])), where n is the size of the array,
Space complexity:- O(1)