一个多项式如果使用数据结构存储在计算机中,有以下两种表示方法:
(1)使用n+2长度的一维数组来存放,数组的第一个位置存储最大指数n项的系数其他位置按照指数n递减,按序存储对应项数:P = (n,an,an-1,...,a1,a0)。例如P(x) = 2x^5+3x^4+5x^2+4x+1转换为数组A,A = [5,2,3,0,5,4,1]
(2)只存储多项式中的非0项,如果有m项非零项,就使用2m+1的数组来存储每一个非零项的指数和系数,数组的第一个元素则为此多项式非零项的个数。例如P(x) = 2x^5+3x^4+5x^2+4x+1转换为数组A,A = [5,2,5,3,4,5,2,4,1,1,0]
用第一种多项式表示法表示多项式A(x)=3x^4+7x^3+6x+2和B(x)=x^4+5x^3+2x^2+9并进行加法运算
#将两个最高次方相等的多项式相加后输出结果
ITEMS = 6
def Print_P(Poly,items):
MaxExp = Poly[0]
for i in range(1,items):
MaxExp = MaxExp-1
if Poly[i] != 0:
if (MaxExp+1) != 0:
print('%dx^%d'%(Poly[i],MaxExp+1),end='')
else:
print('%d'%Poly[i],end='')
if MaxExp>=0:
print('%c'%'+',end='')
print()
def Sum_P(p1,p2):
result = [None]*ITEMS
result[0] = p1[0]
for i in range(1,ITEMS):
result[i] = p1[i]+p2[i]
Print_P(result,ITEMS)
PolyA = [4,3,7,0,6,2]
PolyB = [4,1,5,2,0,9]
#打印多项式A
print('多项式A==>',end='')
Print_P(PolyA,ITEMS)
#打印多项式B
print('多项式B==>',end='')
Print_P(PolyB,ITEMS)
#求和
print('求和结果==>',end='')
Sum_P(PolyA,PolyB)
结果
多项式A==>3x^4+7x^3+6x^1+2
多项式B==>1x^4+5x^3+2x^2+9
求和结果==>4x^4+12x^3+2x^2+6x^1+11