# Sum of all subsequences of a number

• Difficulty Level : Easy
• Last Updated : 06 May, 2021

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

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

## Javascript

 ``

Output:

`24 `

My Personal Notes arrow_drop_up