# Count sub-sets that satisfy the given condition

Given an array arr[] and an integer x, the task is to count the number of sub-sets of arr[] sum of all of whose sub-sets (individually) is divisible by x.

Examples:

Input: arr[] = {2, 4, 3, 7}, x = 2
Output: 3
All valid sub-sets are {2}, {4} and {2, 4}
{2} => 2 is divisible by 2
{4} => 4 is divisible by 2
{2, 4} => 2, 4 and 6 are all divisible by 2

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

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

Approach: To choose a sub-set sum of all of whose sub-sets is divisible by x, all the elements of the sub-set must be divisible by x. So,

• Count all the element from the array that are divisible by x and store it in a variable count.
• Now, all possible sub-sets satisfying the condition will be 2count – 1

Below is the implementation of the above approach:

## C++

 // C++ implementation of the approach #include #define ll long long int using namespace std;    // Function to return the count of the required sub-sets ll count(int arr[], int n, int x) {        // Every element is divisible by 1     if (x == 1) {         ll ans = pow(2, n) - 1;         return ans;     }        // Count of elements which are divisible by x     int count = 0;     for (int i = 0; i < n; i++) {         if (arr[i] % x == 0)             count++;     }        ll ans = pow(2, count) - 1;     return ans; }    // Driver code int main() {     int arr[] = { 2, 4, 3, 5 };     int n = sizeof(arr) / sizeof(arr[0]);     int x = 1;     cout << count(arr, n, x) << endl;     return 0; }

## Java

 // Java implementation of the approach import java.util.*;    class solution {    // Function to return the count of the required sub-sets static long count(int arr[], int n, int x) {        // Every element is divisible by 1     if (x == 1) {         long ans = (long)Math.pow(2, n) - 1;         return ans;     }        // Count of elements which are divisible by x     int count = 0;     for (int i = 0; i < n; i++) {         if (arr[i] % x == 0)             count++;     }        long ans = (long)Math.pow(2, count) - 1;     return ans; }    // Driver code public static void main(String args[]) {     int []arr = { 2, 4, 3, 5 };     int n = arr.length;     int x = 1;     System.out.println(count(arr, n, x)); } }

## Python3

 # Python3 implementation of the approach     # Function to return the count of # the required sub-sets  def count(arr, n, x) :        # Every element is divisible by 1      if (x == 1) :         ans = pow(2, n) - 1         return ans;             # Count of elements which are      # divisible by x      count = 0     for i in range(n) :          if (arr[i] % x == 0) :             count += 1        ans = pow(2, count) - 1     return ans     # Driver code  if __name__ == "__main__" :         arr = [ 2, 4, 3, 5 ]      n = len(arr)     x = 1     print(count(arr, n, x))    # This code is contributed by Ryuga

## C#

 //C# implementation of the approach    using System;    public class GFG{        // Function to return the count of the required sub-sets static double count(int []arr, int n, int x) {     double ans=0;     // Every element is divisible by 1     if (x == 1) {         ans = (Math.Pow(2, n) - 1);         return ans;     }        // Count of elements which are divisible by x     int count = 0;     for (int i = 0; i < n; i++) {         if (arr[i] % x == 0)             count++;     }        ans = (Math.Pow(2, count) - 1);     return ans; }    // Driver code            static public void Main (){            int []arr = { 2, 4, 3, 5 };     int n = arr.Length;     int x = 1;     Console.WriteLine(count(arr, n, x));     } }

## PHP



Output:

15

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.