AtCoder Beginner Contest 198 C - Compass Walking
問題
考察
- 原点(0, 0)からユークリッド距離でRずつしか移動できない。
- 移動先の座標は整数でなくてもよい。
- ぴったり(X, Y)にたどり着かなければならない。
これがこの問題を解くときに大事なポイントだと思われる。
原点(0, 0)と(X, Y)間のユークリッド距離がRで割り切れる場合は
単純にユークリッド距離をRで割れば何回で(X, Y)にたどり着くか分かる。
逆にユークリッド距離がRで割り切れない場合については
(X, Y)とのユークリッド距離がR未満になるまで、(X, Y)に向かって移動する。(移動後の座標を(x, y)とする)
その後、(x, y)からユークリッド距離でR移動した座標と(X, Y)からユークリッド距離でR移動した座標
この2つが一致する座標に移動する。
そうすると、現在の座標からユークリッド距離でR移動すれば(X, Y)にぴったりだどり着ける。
つまり余分に1回移動回数を増やすことで、対応できる。
以上から
sqrt(X^2 + Y^2) / R でちょうど割り切れる場合はsqrt(X^2 + Y^2) / R
割り切れない場合はceil(sqrt(X^2 + Y^2) / R)になる。
ただ、sqrt(X^2 + Y^2) < Rの場合については2になる。