2025年10月14日 星期二

二分搜簡例

# 題目: # 某公司每天能完成 x 單位工作量,共有 n 項工作要完成。 # 請問至少要幾天才能做完? # 例如: # 每天完成量 = 3 # 總量 = 17 # 則答案為 6 天(因為 3×5=15 <17,3×6=18 ≥17)。 # 思路: # 天數越多 → 工作越可能完成, # 這是一個「單調可行性」問題。 def min_days(w,ws): lo,hi = 0,ws ans = hi while lo<=hi: m = (lo+hi)//2 if m * w ==ws: ans = m return ans elif m*w>ws: ans = m hi = m -1 else: lo = m +1 return ans print(min_days(3, 17)) # 6 print(min_days(5, 25)) # 5 print(min_days(15, 150)) # 10 print(min_days(105, 150000000000000000150000000000000)) # Output: # 6 # 5 # 10 # 1428571428571428572857142857143

沒有留言:

張貼留言