整數拆分 python

2021-10-07 11:06:10 字數 876 閱讀 3771

# 我們都知道有一門數學領域叫組合數學,其中整數的拆分問題是非常有名的,

# 例如 我們有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=0i+=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:#乙個單項式乘以多項式的每一項

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 動態規劃實現整數拆分

我們先來看這樣乙個問題 把5拆分成若干無序正整數的和 若干可以包含1 請問有多少種拆分方法?直接用列舉法實現 5 5 5 4 1 5 3 2 5 3 1 1 5 2 2 1 5 2 1 1 1 5 1 1 1 1 1 很顯然,結果為7。注意這裡5 4 1和5 1 4是相同的,只計算為一種方法。如果計...

整數拆分問題

問題 對於1個正整數n,將其拆分成幾個正整數的和,如何拆分可使得其乘積最大?csdn使用者pathuang68給出的結論是 如果不在乎是否為整數的話,那麼把每份平均分為e 2.71828459045.時,所得到的乘積是最大的,如果要是整數的話,那麼就選盡可能地靠近e的整數即可,比如3。具體證明請參見...

190512 整數拆分

題目描述 乙個整數總可以拆分為2的冪的和,例如 7 1 2 4 7 1 2 2 2 7 1 1 1 4 7 1 1 1 2 2 7 1 1 1 1 1 2 7 1 1 1 1 1 1 1 總共有六種不同的拆分方式。再比如 4可以拆分成 4 4,4 1 1 1 1,4 2 2,4 1 1 2。用f n...