# Sum of values of all possible non-empty subsets of the given array

Given an array arr[] of N integers, the task is to find the sum of values of all possible non-empty subsets of array the given array.

Examples:

Input: arr[] = {2, 3}
Output: 10
All non-empty subsets are {2}, {3} and {2, 3}
Total sum = 2 + 3 + 2 + 3 = 10

Input: arr[] = {2, 1, 5, 6}
Output: 112

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

Approach: It can be observed that when all the elements are added from all the possible subsets then each element of the original array appears in 2(N – 1) times. Which means contribution of any element arr[i] in the final answer will be arr[i] * 2(N – 1). So, the required answer will be (arr[0] + arr[1] + arr[2] + … + arr[N – 1]) * 2(N – 1).

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to return the required sum ` `int` `sum(``int` `arr[], ``int` `n) ` `{ ` ` `  `    ``// Find the sum of the array elements ` `    ``int` `sum = 0; ` `    ``for` `(``int` `i = 0; i < n; i++) { ` `        ``sum += arr[i]; ` `    ``} ` ` `  `    ``// Every element appears 2^(n-1) times ` `    ``sum = sum * ``pow``(2, n - 1); ` `    ``return` `sum; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `arr[] = { 2, 1, 5, 6 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(``int``); ` ` `  `    ``cout << sum(arr, n); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach  ` `class` `GFG ` `{ ` ` `  `    ``// Function to return the required sum  ` `    ``static` `int` `sum(``int` `arr[], ``int` `n)  ` `    ``{  ` `     `  `        ``// Find the sum of the array elements  ` `        ``int` `sum = ``0``;  ` `        ``for` `(``int` `i = ``0``; i < n; i++) ` `        ``{  ` `            ``sum += arr[i];  ` `        ``}  ` `     `  `        ``// Every element appears 2^(n-1) times  ` `        ``sum = sum * (``int``)Math.pow(``2``, n - ``1``);  ` `        ``return` `sum;  ` `    ``}  ` `     `  `    ``// Driver code  ` `    ``public` `static` `void` `main (String[] args)  ` `    ``{  ` `        ``int` `arr[] = { ``2``, ``1``, ``5``, ``6` `};  ` `        ``int` `n = arr.length;  ` `        ``System.out.println(sum(arr, n));  ` `    ``}  ` `} ` ` `  `// This code is contributed by AnkitRai01 `

## Python3

 `# Python3 implementation of the approach ` ` `  `# Function to return the required sum ` `def` `sum``( arr, n): ` ` `  `    ``# Find the sum of the array elements ` `    ``sum` `=` `0` `    ``for` `i ``in` `arr :  ` `        ``sum` `+``=` `i ` `     `  `    ``# Every element appears 2^(n-1) times ` `    ``sum` `=` `sum` `*` `pow``(``2``, n ``-` `1``) ` `    ``return` `sum` ` `  `# Driver code ` `arr ``=` `[ ``2``, ``1``, ``5``, ``6` `] ` `n ``=` `len``(arr) ` ` `  `print``(``sum``(arr, n)) ` ` `  `# This code is contributed by Arnab Kundu  `

## C#

 `// C# implementation of the approach  ` `using` `System; ` `class` `GFG ` `{ ` ` `  `    ``// Function to return the required sum  ` `    ``static` `int` `sum(``int``[] arr, ``int` `n)  ` `    ``{  ` `     `  `        ``// Find the sum of the array elements  ` `        ``int` `sum = 0;  ` `        ``for` `(``int` `i = 0; i < n; i++) ` `        ``{  ` `            ``sum += arr[i];  ` `        ``}  ` `     `  `        ``// Every element appears 2^(n-1) times  ` `        ``sum = sum * (``int``)Math.Pow(2, n - 1);  ` `        ``return` `sum;  ` `    ``}  ` `     `  `    ``// Driver code  ` `    ``public` `static` `void` `Main ()  ` `    ``{  ` `        ``int``[] arr = { 2, 1, 5, 6 };  ` `        ``int` `n = arr.Length;  ` `        ``Console.WriteLine(sum(arr, n));  ` `    ``}  ` `} ` ` `  `// This code is contributed by CodeMech `

Output:

```112
```

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

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.