d485: 我愛偶數
這篇教學會示範 ZeroJudge 基礎題庫「d485: 我愛偶數」的解題過程。
題目需求
題目會提供 n 和 m 兩個數字,透過程式求出 n~m 之間有幾個偶數 ( 包含 n 和 m,且 0 為偶數 )。
題目連結:d485: 我愛偶數
解答
這題可以直接用數學運算的方法來解題 ( 不需要用到 if 判斷式 ),首先為了避免從 0 開始的判斷,可先將前後範圍都增加 2 ( 增加 2 可以讓原本是偶數的還是偶數,奇數還是奇數 ),接著判斷開頭與結尾是否為偶數,如果是偶數,計算時要額外增加 1,將 a~b 的範圍除以 2,加上自身偶數的判斷,最後就會得到偶數的數量。
參考:算術運算子
while True:
try:
a, b = map(int, input().split())
a = a + 2 # 避免 a 為 0 時不好判斷,先將數值加 2
b = b + 2 # 因為 a 加 2,所以讓 b 也一起加 2
# 上方三行程式,可使用一行匿名函式 lambda 代替
# a, b = map(lambda x: int(x)+2, input().split())
c = 1 - a%2 # 如果 a 為奇數,不需要加上自己 ( 1 - a%2 會等於 0 )
d = 1 - b%2 # 如果 b 為奇數,不需要加上自己 ( 1 - b%2 會等於 0 )
r = (b-a+c)//2 + d # 計算最後結果
print(r)
except:
break
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~