1. 程式人生 > >python寫的百元買百雞問題擴充套件

python寫的百元買百雞問題擴充套件

今天偶爾看到人家說百元買百雞的問題,問最簡演算法,所以跟著寫了個程式,並且擴充套件到以總價n買m個總數物品的問題,價格隨意。做個隨筆記錄一下。

def mathBuy(n = 100, m = 100, i = 5, j= 3, k = 1/3):
    """
    單位有m個人,現在年終準備了n元錢準備買活動獎品,要求中獎率100%,
    獎品種類有3種,第一種的價格是i元,第二種的價格是j元,第三種的價格是k元。
    現在問每種獎品應該買多少個才剛好花光n元錢,有幾種買法?
    求最簡演算法。
    :param n: 金額
    :param m: 購買總數
    :param i: 物品1的價格
    :param j: 物品2的價格
    :param k: 物品3的價格
    :return:
    """
    result = []
    if (i * m <= n) or (j * m <= n) or (k * m <= n):
        x = 0
        while x <= m and x <= n / i:
            y = int(((n - k * m) - (i - k) * x) / (j - k))
            z = int((n - i * x - j * y) / k)
            sum = i * x + j * y + k * z
            if (x + y + z == m) and (y >= 0) and (z >= 0) and (sum == n):
                print(f"物品1:{x}個, 物品2:{y}個, 物品3:{z}個 ")
                num = [x, y, z]
                result.append(num)
            x += 1
    else:
        print("價格不合適,買不到足夠物品!")
    return result