Edit

【pythonでABC198を解説】C - Compass Walking

問題概要

問題ページ

C - Compass Walking
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()

-Edit
-