(類似的題目: d490, d022)
如果你會等差數列,那這題就很簡單
所以我決定分享其他手段,幫大家增加手牌,也許以後就用上了
方法1: 公式解,用 if 判斷奇偶後,套等差數列和公式解 (寫不出這個或其他類似的東西,你可能要複習一下基礎語法和等差數列)
n = int(input()) |
方法2-1: 暴力解,用 range 遍歷過程中所有的奇數
n = int(input())
result = 0
for i in range(1, n + 1, 2):
result += i
print(result)
|
方法2-2: 暴力解(?),range 這東西,其實是可以直接 sum 的
n = int(input())
print(sum(range(1, n + 1, 2)))
|
方法2-3: 你要寫在同一行其實也可以啦,就......少設一個變數
print(sum(range(1, int(input()) + 1, 2)))
|
方法3: 還是公式解,但不使用 if,利用布林值 True 在 python 中可以被當成 1,False 可以被當成 0 的特性,這個比較難
n = int(input())
print((n + (n % 2 != 0)) * ((n + 1) // 2) // 2)
|
方法4: 用 lambda 把上面那個公式解再壓縮,可以用一行搞定,缺點就是不太好讀,一般也不推薦 python 這樣寫 (不鼓勵任何可讀性差的寫法)
print((lambda n: (n + (n % 2 != 0)) * ((n + 1) // 2) // 2)(int(input())))
|