Tags: algo

Rating:

## not-really-math ##

> Summary: change the order of operations in a math formula with only addition (a) and multiplication (m) to having addition operations first and mulitplication operations second.

Sample Input:

2m3a19m2a38m1

Sample Output:

1760

Explanation:

2*(3+19)*(2+38)*1 = 1760

> Code Concept:
>
> Add ( and ) around the numbers that should be added and change a to + and m to *
>
> Then plug into python calculator to solve


import sys

print(sys.argv)

new = list(sys.argv)

l = ["m","a"]

c = 0

while c < len(new)-1:

if new[c] not in l and new[c+1] not in l:

new[c] += new[c+1]

del new[c+1]

c -= 1

c += 1

c = 0

while c < len(new):

if new[c] == "a":

if new[c-1] != ")":

new.insert(c-1,"(")

new.insert(c+3,")")

new[c+1] = "+"

else:

new.insert(c-1,"+")

new.insert(c, new[c+2])

del new[c+2]

del new[c+2]

elif new[c] == "m":

new[c] = "*"

c += 1
for x in new:

if x != "(" and x!= ")" and x!= "+" and x!="*":

x = int(x)

new = ''.join(new)

print(eval(new)%(pow(2,32)-1))



Original writeup (https://github.com/jkohhokj/hsctf8_writeups/blob/main/not-really-math.MD).