水面下の夢

競プロやイラストに興味があります.メインブログがここ.ソシャゲの話はこっち(http://ameblo.jp/0n0-yumechi/).ブログアイコンはYaQ(@8_9_00)さんから.

ABC 026 B - N重丸

※タイトルミスっちゃった

回答

Submission #445134 - AtCoder Beginner Contest 026 | AtCoder


大きい順にソートしておく.
そして,偶数回の時足して,奇数回のとき引いて~ みたいな計算で出てくる.

入出力例1が非常に参考になる.

入力例1
3
1
2
3
出力例1
18.8495559215
以上のような入力だと、問題文に与えられた図のような色の塗られ方になります。

この際、赤い部分の面積は、 (32−22+12)×π≒18.8495559215 となります。

と,ここの一番最後の計算方法が参考になった.それですぐ解けた.助かる助かる.*1

import math
 
n = int(input())
li = [int(input()) for _ in range(n)]
li.sort()
li = li[::-1]
rsum = 0
for i in range(n):
    if i % 2 == 0:
        rsum += li[i] ** 2
    else:
        rsum -= li[i] ** 2
print(rsum * math.pi)

*1: 上付き文字は<sup>上付き文字</sup>みたいにしないとダメなのね, 上付き、下付き文字を表示する:HTMLタグ辞典 - HTMLタグボード