#41189: 解答


yuenwang0823@gmail.com (Wayne)

學校 : 不指定學校
編號 : 237810
來源 : [118.160.86.204]
最後登入時間 :
2024-07-10 11:26:11
b511. 換銅板 -- 清華 MOOCs 2014 程式設計導論期末考 | From: [118.160.86.204] | 發表日期 : 2024-07-10 11:40

while True: try: n = int(input()) coin = [int(i) for i in input().split()] # 錢幣面額 mx = int(input()) # 總金額 r = [] # 結果的串列 def fn(f): h = len(f) # 一開始是空串列 if h == n: if sum([a*b for a, b in zip(f, coin)]) == mx: # 將組合後的串列兩兩相乘 r.append(f) # 如果等於總額,就將結果存入 r 串列中 return # 串列如果長度已滿,就 return # print(f) # 不清楚的話可以印出來看看 for i in range(mx//coin[h]+1): fn(f+[i]) # 逐步往串列中添加資料 # print(f+[i]) # 不清楚的話可以印出來看看 fn([]) # 一開始是空串列 r.sort() for i in r: print('(', end='') print(*i, sep =',', end=')') # 打散串列後印出 print() except: break

 
ZeroJudge Forum