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

• Last Updated : 10 Mar, 2021

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

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.

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 + arr + arr + … + 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`

## Javascript

 ``
Output:
`112`

My Personal Notes arrow_drop_up