Skip to content
Related Articles

Related Articles

Improve Article

Sum of all possible expressions of a numeric string possible by inserting addition operators

  • Difficulty Level : Easy
  • Last Updated : 04 Jan, 2021
Geek Week

Given a numeric string str of length N, the task is to find the sum of all possible expressions by inserting the ‘+’ operator between the characters of the string any number of times.

Examples:

Input: str = “125”
Output: 176
Explanation:
Inserting “+” after 1st index modifies str to “1+25” and value = 26
Inserting “+” after 2nd index modifies str to “12+5” and value = 17
Inserting “+” after both 1st and 2nd index modifies str to “1+2+5” and value = 8
Therefore, the total sum of all possible expression is 125 + 26 + 17 + 8 = 176

Input: str = “9999999999”
Output: 12656242944

Approach: The idea is to insert the ‘+’ operator at all possible index of the string in all possible ways and calculate the sum. Finally, print the total sum obtained. Follow the steps below to solve the problem:



  • Initialize a variable say, sumOfExp to store the sum of all possible expression by inserting the ‘+’ operator at all possible indices of the string.
  • Generate all possible subset of indices of the string iteratively. For every subset of indices inserts the ‘+’ operator at elements of the subset and increment sumOfExp by the sum of the current expression.
  • Finally, print the value of sumOfExp.

Below is the implementation of the above approach:

Python3




# Python program to implement
# the above approach
  
# Function to find sum of all expressions by
# inserting '+' operator at all possible indices
def findSumOfExpressions(S, N):
  
    # Stores sum of all expressions by inserting
    # '+' operator at all possible indices
    sumOfExp = 0
  
    # Generate all possible subset
    # of indices iteratively
    for i in range(2 ** (N - 1)):
  
        # Stores sum of 
        # current expressions
        ans_sub = 0
  
        # Stores numbers of
        # current expressions
        subst = S[0]
  
        # Traverse the string at insert + at
        # current subset of indices
        for j in range(N - 1):
  
            # If current index exists
            # in the current subset
            if (i >> j) & 1:
  
                # Update ans_sub
                ans_sub += int(subst)
  
                # Update subst
                subst = S[j + 1]
            else:
  
                # Update subst
                subst += S[j + 1]
  
            # + can't be inserted after
            # the last index    
            if j == N - 2:
                ans_sub += int(subst)
  
        # Update ans
        sumOfExp += ans_sub
  
    # Base case     
    if N == 1:
        print(int(S))
    else:
  
        # Print answer
        print(sumOfExp)
  
# Driver Code
if __name__ == '__main__':
      
    # Given string
    S = "9999999999"
      
    # Length of the string
    N = len(S)
  
    # Function call
    findSumOfExpressions(S, N)
Output:
12656242944

Time Complexity: O(2N * N)
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.




My Personal Notes arrow_drop_up
Recommended Articles
Page :