AtCoder ABC 026 B – N重丸 Python解説

スポンサーリンク

N重丸

高橋君は、丸が大好きです。今日も、原点を中心とした大きさの違う円を N 個書きました。
その円の集合に対し、外側から赤白交互に色を塗ったとき、赤く塗られる部分の面積を出力しなさい。

AtCoder Beginner Contest 026 「N重丸」

問題文から丸の一番外側は赤で始まることがわかるので、for文を使い、偶数の時は赤なので面積を足し、奇数の時は白なので面積を引いて赤く塗られる部分の面積を求めたいと思います。

import math

n = int(input())

p = 0

a = [int(input()) for _ in range(n)]

a = sorted(a, reverse=True)

for i in range(n):
    if i % 2 == 0:
        p += a[i] ** 2
    else:
        p -= a[i] ** 2
        
print(p * math.pi)

入力から与えられる半径はソートされていない可能性があるので、半径を受け取ったら、一番外側の半径が一番目に来るようにソートを逆順にしています。

続くfor文では、偶数のときは赤なので面積に足しています。最後にmath.piで面積を求めています。