【ABC168 C】「: (Colon)」を解く【Python3】

コンテスト一覧へ

 

時針と分針の長さがそれぞれ、A,Bcmであるアナログ時計がH時M分になったとき、2本の針の端点は何cm離れているか求める問題です。

提出
import math
a, b, h, m = map(int, input().split())

mr = 6*m
hr = 360*(h/12+m/720)
r = math.radians(abs(mr-hr))

ans = math.sqrt((a**2)+(b**2)-2*a*b*math.cos(r))
print(ans)

時針の長さをa、分針をb、答えをcと置くと、今回の問題は辺a,b,cを持つ三角形のc辺の長さを求める問題と同じです。

数学の余弦定理を用いると、

c2 = a2+b2-2abcosθ

となるため、θの部分を求めれば、解くことができます。

まず、分針と時針をそれぞれ、頂点の12からの角度を求め、mr,hrに代入します。

時針は分針の位置も考えて計算する必要があります。

続いて、mathモジュールを用いてcosを計算するのですが、このモジュールでは、三角関数の角度の単位としてラジアンを用いるため、事前にmath.radians()で、度をラジアンに変換しておきます。

あとは、先ほどの余弦定理で計算して、結果を出力します。

スポンサーリンク

【ABC168】解説記事リスト

コンテスト一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。