# 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.

 `// 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 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 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# 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 `

 `> 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
```

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.

Article Tags :
Practice Tags :