AtCoder ABC 181 B – Trapezoid Sum Python解説

スポンサーリンク

Trapezoid Sum

何も書かれていない黒板があります。 高橋くんは N 回の操作を行い、黒板に整数を書きます。
i 回目の操作では、 Ai以上 Bi以下の整数すべてを 1 個ずつ、合計 Bi−Ai+1 個の整数を書きます。
N 回の操作を終えたときの、黒板に書かれた整数の合計を求めてください。

AtCoder Beginner Contest 「Trapezoid Sum」

整数A,Bを受け取り、for文でAからBまでの整数をひとつずつ足していったら、あえなくTLEになったので路線変更です。和の公式をつかっていきます。

和の公式を使うとAからBまでの和は、B * (B + 1) / 2 – A * (A – 1) / 2 で表すことができるので、これを元に実装していきます。

n = int(input())

result = 0

for i in range(n):
    a, b = map(int, input().split())
    result += int((b * (b + 1) / 2) - (a * (a - 1) / 2)) 
        
print(result)

入力からa,bを受け取ったら、和の公式を使い、a,b間の整数を和を求めてresultに入れておきます。
resultにa,b間の和を入れる際に、int型に変更しておくといいでしょう。これをfor文でN回ループさせて完了です。

AtCoderB問題

Posted by cheese