1. 程式人生 > 實用技巧 >騰訊2018春招技術類-小Q的歌單

騰訊2018春招技術類-小Q的歌單

小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):  # 第二次步長為ly
dp[j] += dp[j-ly] print(dp[k]%1000000007)

您的程式碼已儲存
答案正確:恭喜!您提交的程式通過了所有的測試用例