「」"
#題目: 手中有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
最少數量貨物裝箱問題
題目描述 有重量分別為3,5,7公斤的三種貨物,和乙個載重量為x公斤的箱子 不考慮體積等其它因素,只計算重量 需要向箱子內裝滿x公斤的貨物,要求使用的貨物個數盡可能少 三種貨物數量無限 輸入描述 輸入箱子載重量x 1 x 10000 乙個整數。輸出描述 如果無法裝滿,輸出 1。如果可以裝滿,輸出使用...
用最少數量的箭引爆氣球
在二維空間中有許多球形的氣球。對於每個氣球,提供的輸入是水平方向上,氣球直徑的開始和結束座標。由於它是水平的,所以y座標並不重要,因此只要知道開始和結束的x座標就足夠了。開始座標總是小於結束座標。平面內最多存在104個氣球。一支弓箭可以沿著x軸從不同點完全垂直地射出。在座標x處射出一支箭,若有乙個氣...
用最少數量的箭引爆氣球
在二維空間中有許多球形的氣球。對於每個氣球,提供的輸入是水平方向上,氣球直徑的開始和結束座標。由於它是水平的,所以y座標並不重要,因此只要知道開始和結束的x座標就足夠了。開始座標總是小於結束座標。平面內最多存在104個氣球。一支弓箭可以沿著x軸從不同點完全垂直地射出。在座標x處射出一支箭,若有乙個氣...