#45074: Python 三行解


210039@sdhs.ntpc.edu.tw (502 10許祐菘)

學校 : 不指定學校
編號 : 275047
來源 : [203.204.210.131]
最後登入時間 :
2025-01-05 21:07:19
q181. 1. 等紅綠燈 -- 2025年1月APCS | From: [203.204.210.131] | 發表日期 : 2025-01-05 21:37

a, b = map(int, input().split())
n = int(input())
print(sum([(a+b)-i%(a+b) for i in list(map(int, input().split())) if i%(a+b) >= a]))
 
#45077: Re: Python 三行解


ericshen19555@gmail.com (暴力又被TLE)

學校 : 南光中學
編號 : 103121
來源 : [1.174.178.218]
最後登入時間 :
2025-01-08 19:15:31
q181. 1. 等紅綠燈 -- 2025年1月APCS | From: [1.174.137.90] | 發表日期 : 2025-01-06 00:56

a, b = map(int, input().split())
n = int(input())
print(sum([(a+b)-i%(a+b) for i in list(map(int, input().split())) if i%(a+b) >= a]))


首先map() sum()傳入的都是iterable 所以多括一層list()和[]只是在浪費時間和記憶體轉成list (但list的常數很好 有時這樣會比較快 但絕對比較耗記憶體)
然後題解不應該直接貼程式碼 應該敘述解題邏輯
最後 明明就可以一行 

print((lambda a, b, n: sum(a + b - i % (a + b) for i in map(int, input().split()) if i % (a + b) >= a))(*map(int, input().split()), input()))
 
ZeroJudge Forum