読者です 読者をやめる 読者になる 読者になる

SRM 514 Div2 Easy MagicalGirlLevelOneDivTwo

問題

魔法少女は悪魔を倒す魔法攻撃を行うことが出来る.点(u, v)にいるとき,魔法攻撃は(u+d, v+d), (u-d, v+d), (u+d, v-d), (u-d, v-d)からなる正方形エリアに影響を与える.魔法少女が(0, 0)に,悪魔が(x, y)にいる時,悪魔に魔法攻撃を放つことが出来る位置までに移動する最小距離を求めよ.

解答

x座標について可能な限り,悪魔に近づく(最大でdだけ近づける).y座標も同様に考える.sqrt(x^2 + y^2)が答え.

class MagicalGirlLevelOneDivTwo
{
public:
  double theMinDistance(int d, int x, int y)
    {
      if (abs(x) <= d ) x = 0;
      else if (x < 0) x += d;
      else x -= d;
      if (abs(y) <= d) y = 0;
      else if (y < 0) y += d;
      else y -= d;

      return sqrt(x*x + y*y);
    }
};