# -*- coding: utf-8 -*-
# p = 2*x^5 + 3*x^2 + 2*x^1 + 5
# q = 2*x^3 + 3*x^1 + 6
# p+q = ?
# p*q = ?
# ans: 2*x^5 + 2*x^3 + 3*x^2 + 5*x^1+ 11
p = '2*x^5 + 3*x^2 + 2*x^1 + 5'
q = '2*x^3 + 3*x^1 + 6'
print('p=' + p)
print('q=' + q)
pl = p.replace(' ','').split('+')
ql = q.replace(' ','').split('+')
r = {}
for p in pl:
p =[int(i) for i in p.split('*x^')]
if len(p)>1:
if p[1] in r:
r[p[1]] += int(p[0])
else:
r[p[1]] = int(p[0])
else:
if 0 in r:
r[0]+=p[0]
else:
r[0]=p[0]
for q in ql:
q =[int(i) for i in q.split('*x^')]
if len(q)>1:
if q[1] in r:
r[q[1]] += int(q[0])
else:
r[q[1]] = int(q[0])
else:
if 0 in r:
r[0]+=q[0]
else:
r[0]=q[0]
d =[ [k,v] for k,v in r.items()]
d.sort()
d.reverse()
sss = []
for i in d:
sss.append(str(i[1]) + '*x^' + str(i[0]))
sss = '+'.join(sss)
print('p+q = ' + sss[:-4])
# multiply p q
if len(pl[-1])==1:
pl[-1]=pl[-1]+'*x^0'
if len(ql[-1])==1:
ql[-1]=ql[-1]+'*x^0'
pl = [i.split('*x^') for i in pl]
ql = [i.split('*x^') for i in ql]
pl = [[int(j) for j in i] for i in pl]
ql = [[int(j) for j in i] for i in ql]
# print(pl)
# print(ql)
r1 = []
lp = len(pl)
lq = len(ql)
for i in range(lp):
for j in range(lq):
r1.append([pl[i][0]*ql[j][0],pl[i][1]+ql[j][1]])
# print(r1)
r = {}
for i in r1:
if i[1] in r:
r[i[1]]+=i[0]
else:
r[i[1]]=i[0]
# print(r)
d =[ [k,v] for k,v in r.items()]
d.sort()
d.reverse()
sss = []
for i in d:
sss.append(str(i[1]) + '*x^' + str(i[0]))
sss = '+'.join(sss)
print('p*q = ' + sss[:-4])