python数字拆分比较大小_整数拆分(Python),python

# 我们都知道有一门数学领域叫组合数学,其中整数的拆分问题是非常有名的,

# 例如 我们有1g、 2g、 3g、 4g、 5g的砝码各一个,问能称出多少的重量,各有多少称法

# 这里我们利用欧拉提出的母函数的概念(当然拉马努金的公式也可以,拉马努金是我非常喜欢的数学家), 直接带入求解,(1+x)(1+x^2)(1+x^3)(1+x^4)(1+x^5)

def add_poly(L1,L2): #多项式加法,同次项系数相加

R=[]

if len(L1)>len(L2):#默认L2比较长

L1,L2=L2,L1

i=0

while i

R.append(L1[i]+L2[i])#从低次项开始对应相加

i+=1

R=R+L2[len(L1):len(L2)]#较长的多项式高次项直接复制

return R

def multiply_poly(L1,L2):#多项式乘法

if len(L1)>len(L2):

L1,L2=L2,L1

zero=[];R=[]

for i in L1:

T=zero[:]#存储中间产生的结果多项式,每次更新结果多项式的列表长度

for j in L2:#一个单项式乘以多项式的每一项

T.append(i*j)

R=add_poly(R,T)

zero=zero+[0]# 每一个新的多形式都要比前一个多项式次数高1,列表长度增加,所以多补一个0

return R

sum_data = multiply_poly(multiply_poly(multiply_poly(multiply_poly([1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 0]),[1, 0, 0, 1, 0, 0]), [1, 0, 0, 0, 1, 0]), [1, 0, 0, 0, 0, 1])

print(sum(sum_data))

你可能感兴趣的:(python数字拆分比较大小)