#45: python 用 迴圈 會有 逾時(TLE) 的問題


super7@gm.ocu.edu.tw (賴麒祐)

學校 : 不指定學校
編號 : 1377
來源 : [59.126.209.172]
最後登入時間 :
2024-02-05 21:32:12
a034. 我愛偶數 -- 板橋高中教學題 | From: [114.46.218.104] | 發表日期 : 2023-10-24 15:07

這題使用 迴圈, 似乎會 逾時(TLE)

所以只能用 前後加減 % 2 == 0 來判斷 偶數

觀念: 一般 True = 1, False = 0

 

假設 a = 0, b = 9 或 a = 1, b = 10, 也就是 一個為單數, 一個為偶數

那  (b - a) / 2 = 4.5, 取整數 int((b - a) / 2) 或者 ((b - a) // 2) -> 4, 兩種邏輯都可以

這時候少掉一個偶數, 再加回來,

可用 ((a % 2 == 0) or (b % 2 == 0)) 會傳回 " True -> 1 "

 

假設 a = 2, b = 10, 也就是 前後都是 偶數, 

那  (b - a) / 2 = 4.0, 取整數 int((b - a) / 2) 或者 ((b - a) // 2) -> 也是 4

這時候少掉一個偶數, 再加回來,

還是可用 ((a % 2 == 0) or (b % 2 == 0)) 會傳回 " True -> 1 "

 

假設 a = 1, b = 9, 前後都是 單數

那  (b - a) / 2 = 4.0, 取整數 int((b - a) / 2) 或者 ((b - a) // 2) -> 也是 4

這時候 前後都是 單數, 不需要再加 1

所以 ((a % 2 == 0) or (b % 2 == 0)) 會傳回 " False -> 0 "

 

因此公式可推論為

int((b - a) / 2) + ((a % 2 == 0) or (b % 2 == 0))

或者

((b - a) // 2) + ((a % 2 == 0) or (b % 2 == 0))

 

 

 
ZeroJudge Forum