Find out the sum-string
There is a string given to you. You have to find out whether the given string is a sum string or not. For a string "12345168213" if it goes like this, "123" + "45" = "168" "45" + "168" = "213" then it is a sum string otherwise not.
Input:
Test case T
T no. of strings we have to check.
E.g.
3
"12345168213"
"123581321"
"15643"
Output:
If the string is a sum-string then you have to print
"It is a sum string"
and, if it is not then you have to print
"It is not a sum string".
Example
T=3
Str= "12345168213"
"123" + "45" = "168"
"45" + "168" = "213"
It is a sum string
Str= "123581321"
"1" + "2" = "3"
"2" + "3" = "5"
"3" + "5" = "8"
"5" + "8" = "13"
"8" + "13" = "21"
It is a sum string
Str= "15643"
"1" + "5" = "6"
"5" + "6" = "11"
It is not a sum string
To find out the actual length of the first two substrings is a problem of combination. We will solve the problem using the backtracking process. If we break the problem into sub-problems like,
Where, i, j, k, l, m is the position index on the substring of the string.
For the string "12345168213"
To find out the length of the first substring we will look for the all possible combination of the sub-string of the string from the starting index.
"1" , "12" , "123" , "1234" , "12345" , "123451" etc.
To find out the length of the second substring we will look for all possible combinations of the sub-string of the string from the last index of the first substring.
Let the first index= "123" then the all possible combinations are "4", "45", "451", "4516" etc.
After calculating the summation of the two sub-strings will also find out the length of the result and take the next sub-string who has a length equal to that length.
If the two substrings are "123" and "45" after calculating the summation the result "168" we will calculate its length which is equal to 3 and take the next sub-string e.g. "168"
Both the resultant and the sub-string are the same therefore we will add up "45" and "168" and check with "213".
C++ implementation:
Output