騰訊2018春招技術類-小Q的歌單
阿新 • • 發佈:2020-08-23
小Q有X首長度為A的不同的歌和Y首長度為B的不同的歌,現在小Q想用這些歌組成一個總長度正好為K的歌單,每首歌最多隻能在歌單中出現一次,在不考慮歌單內歌曲的先後順序的情況下,請問有多少種組成歌單的方法。
輸入描述:
每個輸入包含一個測試用例。
每個測試用例的第一行包含一個整數,表示歌單的總長度K(1<=K<=1000)。
接下來的一行包含四個正整數,分別表示歌的第一種長度A(A<=10)和數量X(X<=100)以及歌的第二種長度B(B<=10)和數量Y(Y<=100)。保證A不等於B。
輸出描述:
輸出一個整數,表示組成歌單的方法取模。因為答案可能會很大,輸出對1000000007取模的結果。
輸入例子1:
5
2 3 3 3
輸出例子1:
9
參考:
01揹包求方案數問題。
k = int(input().strip()) lx, x, ly, y = list(map(int, input().strip().split(" "))) dp = [1] + [0] * k # 第一位初始化為1 for i in range(x): for j in range(k, lx-1, -1): dp[j] += dp[j-lx] for i in range(y): for j in range(k, ly-1, -ly): # 第二次步長為lydp[j] += dp[j-ly] print(dp[k]%1000000007)
您的程式碼已儲存
答案正確:恭喜!您提交的程式通過了所有的測試用例