[Python] 獲得最少數量的貨幣硬幣方式
阿新 • • 發佈:2019-02-14
“”"
#題目: 手中有M種的面值的錢 ,現在有一價格是N的物品,求出買東西的 數量最少的組合
#第一行輸入兩個數字,第一個數字 M ,第二個數字是 價格 N
#第二行是 對應的面值的種類 :10 ,20, 50
#第三種是 對應面值的數量 ,分別是 1,10 ,1
#輸入 : 3 130
10 20 50
1 10 1
#思路 :把輸入得到後,轉變成dict 型別,獲取對應的key值,進行降序排列,然後使用 divmod 對數字取餘數
“”"
def get_all_money_kinds_and_value(dict_value, price): sort_value_list = [*dict_value] list1 = [int(x) for x in sort_value_list] list1 = sorted(list1, key=int, reverse=True) rest_value = int(price) calculate_amount = 0 for item in list1: print('item', item) result_value = divmod(rest_value, item) if result_value[0] < int(dict_value[str(item)]): # the value rest_value = result_value[1] calculate_amount += result_value[0] else: rest_value -= int(dict_value[str(item)]) * item calculate_amount += int(dict_value[str(item)]) print('rest value',rest_value) return calculate_amount if __name__ == '__main__': line0 = input() line0 = line0.split() money_kind = line0[0] gift_price = line0[1] line1 = input() money_value_list = line1.split() line2 = input() money_mount_list = line2.split() dict_money_value_and_money = {} for item in range(int(money_kind)): dict_money_value_and_money[money_value_list[item]] = money_mount_list[item] money_least_amount = get_all_money_kinds_and_value(dict_money_value_and_money, gift_price) print(money_least_amount)
#3 100
#10 20 50
#1 10 1