問題概要
問題ページ
-
C - Compass Walking
問題ページへ移動する
問題文
\(2\) 次元平面上の原点に高橋君がいます。
高橋君が \(1\) 歩歩くと、いまいる点からのユークリッド距離がちょうど \(R\) であるような点に移動することができます(移動先の座標が整数である必要はありません)。これ以外の方法で移動することはできません。
高橋君が点 \((X,Y)\) に到達するまでに必要な歩数の最小値を求めてください。
なお、点 \((x_1,y_1)\) と点 \((x_2,y_2)\) のユークリッド距離は \(\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}\) で与えられます。
制約
- \(1 \leq R \leq 10^5\)
- \(0 \leq X,Y \leq 10^5\)
- \((X,Y) \neq (0,0)\)
- 入力は全て整数
問題の考察
ACコード
import sys
def solve():
input = sys.stdin.readline
mod = 10 ** 9 + 7
r, x, y = list(map(int, input().rstrip('\n').split()))
dist = (x ** 2 + y ** 2) ** 0.5
if dist < r:
print(2)
elif dist % r == 0:
print(int(dist // r))
else:
print(int(dist // r) + 1)
if __name__ == '__main__':
solve()