# Sum of all subsequences of a number

Given a number as string s, find the sum of all the elements present in all possible subsequences of s.

Examples :

```Input : s = "123"
Output : 24
Explanation : all possible sub-sequences are
1, 2, 3, {1, 2}, {2, 3}, {1, 3}, {1, 2, 3}

Input : s = "453"
Output : 48
```

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

Approach : Using power set, we can find all the subsequences and sum up all the subsequences individually in a different function. The total number of subsequences possible are 2n-1. Add the sum of all subsequences to the combined sum which is the final output.

Below is the implementation of above approach.

## C++

 `// CPP program to find the sum of ` `// elements present in all subsequences ` `#include ` `using` `namespace` `std; ` ` `  `// Returns numeric value of a subsequence of ` `// s. The subsequence to be picked is decided ` `// using bit pattern of num (We pick all those ` `// digits for which there is a set bit in num) ` `int` `findSubSequence(string s, ``int` `num) ` `{   ` `    ``// Initialize the result ` `    ``int` `res = 0; ` ` `  `    ``// till n!=0 ` `    ``int` `i = 0; ` `    ``while` `(num) { ` `         `  `        ``// if i-th bit is set  ` `        ``// then add this number ` `        ``if` `(num & 1) ` `            ``res += s[i] - ``'0'``; ` `        ``i++; ` `         `  `        ``// right shift i ` `        ``num = num >> 1; ` `    ``} ` ` `  `    ``return` `res; ` `} ` ` `  `// function to find combined sum ` `// of all individual subsequence sum ` `int` `combinedSum(string s) ` `{ ` `    ``// length of string ` `    ``int` `n = s.length(); ` `     `  `    ``// stores the combined ` `    ``int` `c_sum = 0; ` ` `  `    ``// 2^n-1 subsequences ` `    ``int` `range = (1 << n) - 1; ` ` `  `    ``// loop for all subsequences ` `    ``for` `(``int` `i = 0; i <= range; i++) ` `        ``c_sum += findSubSequence(s, i); ` ` `  `    ``// returns the combined sum ` `    ``return` `c_sum; ` `} ` ` `  `// driver code ` `int` `main() ` `{ ` `    ``string s = ``"123"``; ` `    ``cout << combinedSum(s);     ` `    ``return` `0; ` `} `

## Java

 `// Java program to find the sum of elements ` `// present in all subsequences ` `import` `java.io.*; ` ` `  `class` `GFG { ` `     `  `    ``// Returns numeric value of a  ` `    ``// subsequence of s. The subsequence ` `    ``// to be picked is decided using bit ` `    ``// pattern of num (We pick all those ` `    ``// digits for which there is a set  ` `    ``// bit in num) ` `    ``static` `int` `findSubSequence(String s,  ` `                                ``int` `num) ` `    ``{  ` `        ``// Initialize the result ` `        ``int` `res = ``0``; ` `     `  `        ``// till n!=0 ` `        ``int` `i = ``0``; ` `        ``while` `(num > ``0``) { ` `             `  `            ``// if i-th bit is set  ` `            ``// then add this number ` `            ``if` `((num & ``1``) == ``1``) ` `                ``res += s.charAt(i) - ``'0'``; ` `            ``i++; ` `             `  `            ``// right shift i ` `            ``num = num >> ``1``; ` `        ``} ` `     `  `        ``return` `res; ` `    ``} ` ` `  `    ``// function to find combined sum ` `    ``// of all individual subsequence ` `    ``// sum ` `    ``static` `int` `combinedSum(String s) ` `    ``{ ` `         `  `        ``// length of String ` `        ``int` `n = s.length(); ` `         `  `        ``// stores the combined ` `        ``int` `c_sum = ``0``; ` `     `  `        ``// 2^n-1 subsequences ` `        ``int` `range = (``1` `<< n) - ``1``; ` `     `  `        ``// loop for all subsequences ` `        ``for` `(``int` `i = ``0``; i <= range; i++) ` `            ``c_sum += findSubSequence(s, i); ` `     `  `        ``// returns the combined sum ` `        ``return` `c_sum; ` `    ``} ` ` `  `    ``// Driver function ` `    ``public` `static` `void` `main (String[] args) { ` `     `  `        ``String s = ``"123"``; ` `        ``System.out.println(combinedSum(s)); ` `    ``} ` ` `  `} ` ` `  `// This code is contributed by Anuj_ 67 `

## Python 3

 `# Python 3 program to find the sum of ` `# elements present in all subsequences ` `  `  `# Returns numeric value of a subsequence of ` `# s. The subsequence to be picked is decided ` `# using bit pattern of num (We pick all those ` `# digits for which there is a set bit in num) ` `def` `findSubSequence(s, num): ` ` `  `    ``# Initialize the result ` `    ``res ``=` `0` `  `  `    ``# till n!=0 ` `    ``i ``=` `0` `    ``while` `(num) : ` `          `  `        ``# if i-th bit is set  ` `        ``# then add this number ` `        ``if` `(num & ``1``): ` `            ``res ``+``=` `ord``(s[i]) ``-` `ord``(``'0'``) ` `        ``i``+``=``1` `          `  `        ``# right shift i ` `        ``num ``=` `num >> ``1` `  `  `    ``return` `res ` `  `  `# function to find combined sum ` `# of all individual subsequence sum ` `def` `combinedSum(s): ` ` `  `    ``# length of string ` `    ``n ``=` `len``(s) ` `      `  `    ``# stores the combined ` `    ``c_sum ``=` `0` `  `  `    ``# 2^n-1 subsequences ` `    ``ran ``=` `(``1` `<< n) ``-` `1` `  `  `    ``# loop for all subsequences ` `    ``for` `i ``in` `range``( ran``+``1``): ` `        ``c_sum ``+``=` `findSubSequence(s, i) ` `  `  `    ``# returns the combined sum ` `    ``return` `c_sum ` `  `  `# driver code ` `if` `__name__ ``=``=` `"__main__"``: ` `     `  `    ``s ``=` `"123"` `    ``print``(combinedSum(s)) `

## C#

 `// C# program to find the sum of elements ` `// present in all subsequences ` `using` `System; ` ` `  `class` `GFG { ` `     `  `    ``// Returns numeric value of a  ` `    ``// subsequence of s. The subsequence ` `    ``// to be picked is decided using bit ` `    ``// pattern of num (We pick all those ` `    ``// digits for which there is a set  ` `    ``// bit in num) ` `    ``static` `int` `findSubSequence(``string` `s,  ` `                                 ``int` `num) ` `    ``{  ` `        ``// Initialize the result ` `        ``int` `res = 0; ` `     `  `        ``// till n!=0 ` `        ``int` `i = 0; ` `        ``while` `(num > 0) { ` `             `  `            ``// if i-th bit is set  ` `            ``// then add this number ` `            ``if` `((num & 1) == 1) ` `                ``res += s[i] - ``'0'``; ` `            ``i++; ` `             `  `            ``// right shift i ` `            ``num = num >> 1; ` `        ``} ` `     `  `        ``return` `res; ` `    ``} ` ` `  `    ``// function to find combined sum ` `    ``// of all individual subsequence ` `    ``// sum ` `    ``static` `int` `combinedSum(``string` `s) ` `    ``{ ` `         `  `        ``// length of string ` `        ``int` `n = s.Length; ` `         `  `        ``// stores the combined ` `        ``int` `c_sum = 0; ` `     `  `        ``// 2^n-1 subsequences ` `        ``int` `range = (1 << n) - 1; ` `     `  `        ``// loop for all subsequences ` `        ``for` `(``int` `i = 0; i <= range; i++) ` `            ``c_sum += findSubSequence(s, i); ` `     `  `        ``// returns the combined sum ` `        ``return` `c_sum; ` `    ``} ` ` `  `    ``// Driver function ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``string` `s = ``"123"``; ` `        ``Console.Write(combinedSum(s)); ` `    ``} ` ` `  `} ` ` `  `// This code is contributed by Sam007 `

## PHP

 `> 1; ` `    ``} ` ` `  `    ``return` `\$res``; ` `} ` ` `  `// function to find combined sum ` `// of all individual subsequence sum ` `function` `combinedSum(string ``\$s``) ` `{ ` `     `  `    ``// length of string ` `    ``\$n` `= ``strlen``(``\$s``); ` `     `  `    ``// stores the combined ` `    ``\$c_sum` `= 0; ` ` `  `    ``// 2^n-1 subsequences ` `    ``\$range` `= (1 << ``\$n``) - 1; ` ` `  `    ``// loop for all subsequences ` `    ``for` `(``\$i` `= 0; ``\$i` `<= ``\$range``; ``\$i``++) ` `        ``\$c_sum` `+= findSubSequence(``\$s``, ``\$i``); ` ` `  `    ``// returns the combined sum ` `    ``return` `\$c_sum``; ` `} ` ` `  `    ``// Driver Code ` `    ``\$s` `= ``"123"``; ` `    ``echo` `combinedSum(``\$s``);  ` `     `  `// This code is contributed by Anuj_67 ` `?> `

Output:

```24
```

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.

Improved By : Sam007, vt_m, chitranayal

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.