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
微信扫码关注
抖音扫码关注