AtCoder-ABC198 C - Compass Walking【Python解答例】
AtCoder Beginner Contest198のC - Compass WalkingについてPythonの解答例を記事にしていきます。
atcoder.jp
AtCoder Beginner Contest198 C - Compass Walking
問題文
2 次元平面上の原点に高橋君がいます。
高橋君が 1 歩歩くと、いまいる点からのユークリッド距離がちょうど R であるような点に移動することができます(移動先の座標が整数である必要はありません)。これ以外の方法で移動することはできません。
高橋君が点 (X,Y) に到達するまでに必要な歩数の最小値を求めてください。
なお、点 (x1,y1) と点 (x2,y2) のユークリッド距離は √(x1−x2)2+(y1−y2)2 で与えられます。
制約
・1≤R≤10^5
・0≤X,Y≤10^5
・(X,Y)≠(0,0)
・入力は全て整数
解答例
r, x, y = map(int,input().split()) R_tmp = x**2 + y**2 R = pow(R_tmp, 0.5) if R < r: ans = 2 else: ans = -(-R // r) print(int(ans))
解説
1歩でrだけ進む高橋君が点(X,Y)に到着するのに必要な最小の歩数を答える問題です。
原点から点(X,Y)までの距離を求めます。
問題文にある数式の通りにRとして計算しました。
必要な歩数はこのRを歩幅rで割った余り切り上げた値が答えとなります。
ただし、Rが歩幅rより小さいときは1歩でたどり着くことはできず、遠くに寄り道する必要があるので2歩になります。
このようにして求めた必要な歩数を出力したらACでした。
ABC198の関連記事はこちら
ebisuke33.hatenablog.com