はじめに
Pythonを小学生5年生から触っている、現役中学生のwhile-true-ifです。
今回はpythonでヘロンの公式を用いた、ABC002のC問題を解いていきたいと思います。
この記事の対象者・内容
- AtCoderをやってる人
- Pythonをやってる人
ABC002のC問題
問題文
現在、神は天界のいたるところで測量を行っており、高橋くんは神の測量を手伝わなければなりません。
今回は三角形の測量です。高橋くんには
2 次元平面上の 3 つの点 A, B, C が与えられます。
少しでも早く母音を取り戻すために、三角形 ABC の面積を出力するプログラムを書いてください。
入力
入力は以下の形式で標準入力から与えられる。
$x_a\ y_b\ x_b\ y_b\ x_c\ y_c$
出力
三角形 ABC の面積を 1 行で出力してください。
また、出力の末尾には改行を入れること。
出力は絶対誤差が $10^{-2}$ 以下であれば許容される。
入力例1
1 0 3 0 2 5
出力例1
5.0
ヘロンの公式
Pythonのコード
def cie_heron(ax, ay, bx, by, cx, cy):
x = math.sqrt((bx - ax) ** 2 + (by - ay) ** 2)
y = math.sqrt((cx - bx) ** 2 + (cy - by) ** 2)
z = math.sqrt((ax - cx) ** 2 + (ay - cy) ** 2)
s = (x + y + z) / 2
return math.sqrt(s * (s - x) * (s - y) * (s - z))
コードの説明
6つの引数は最初から、a
点のx座標、a
点のy座標、b
点のx座標、b
点のy座標、b
点のy座標、c
点のx座標、c
点のy座標を示しています。
x,y,zという変数は三平方の定理を用いて、三角形の辺の長さを求めます。
そこから、三辺の長さからヘロンの公式を用いて、三角形の面積を返します。
実際に使用
注意点
import math
このコードをつけないと、RE(実行時エラー)になります。
ACコード
import math
def cie_heron(ax, ay, bx, by, cx, cy):
x = math.sqrt((bx - ax) ** 2 + (by - ay) ** 2)
y = math.sqrt((cx - bx) ** 2 + (cy - by) ** 2)
z = math.sqrt((ax - cx) ** 2 + (ay - cy) ** 2)
s = (x + y + z) / 2
return math.sqrt(s * (s - x) * (s - y) * (s - z))
print(cie_heron(*map(int,input().split())))
このコードがACコードです。
ちなみに、ここに、幾何的な関数があがっています。(製作者は自分です)
おわりに
自分はAtCoderの知識がないので、ヘロンの公式でごり押してみました。
数学の力は偉大です。
自分は、GitHubをやっていて、基本はPythonを使用しています。
よければQiitaアカウントとGitHubアカウントのどちらもフォローをお願いします。(フォローされたら、フォロー返しします。)
また、この記事に「いいね」を付けてくれるとありがたいです。