freeCodeCamp/curriculum/challenges/japanese/10-coding-interview-prep/project-euler/problem-460-an-ant-on-the-m...

2.5 KiB

id title challengeType forumTopicId dashedName
5900f5381000cf542c51004b 問題 460: 歩き回るアリ 5 302135 problem-460-an-ant-on-the-move

--description--

ユークリッド平面上で、アリが点 A(0, 1) から点 B(d, 1) へ移動します。ここで、d は整数です。

各ステップにおいて、点 (x_0, y_0) にいるアリは、x_1 ≥ 0, y_1 ≥ 1 を満たす格子点 (x_1, y_1) のうち 1 つを選び、一定の速度 v で (x_1, y_1) に向かって直進します。 v の値は、y_0y_1 によって次のように決まります。

  • y_0 = y_1 の場合、v の値は y_0 に等しい。
  • y_0 ≠ y_1 の場合、v の値は \frac{y_1 - y_0}{\ln y_1 - \ln y_0} に等しい。

左側の図は、d = 4 の場合に考えられる経路の一つです。 まず、アリは A(0, 1) から P_1(1, 3) まで、速度 \frac{3 - 1}{\ln 3 - \ln 1} ≈ 1.8205 で進みます。 したがって、所要時間は \frac{\sqrt{5}}{1.820} ≈ 1.2283 です。

P_1(1, 3) から P_2(3, 3) までは速度 3 で移動するので、所要時間は \frac{2}{3} ≈ 0.6667 です。 P_2(3, 3) から B(4, 1) までのアリの移動速度は \frac{1 - 3}{\ln 1 -\ln 3} ≈ 1.8205なので、所要時間は \frac{\sqrt{5}}{1.8205} ≈ 1.2283 となります。

したがって、合計所要時間は 1.2283 + 0.6667 + 1.2283 = 3.1233 です。

右側の図は別の経路です。 合計所要時間は 0.98026 + 1 + 0.98026 = 2.96052 となります。 これが d = 4 に対する最速経路であることが分かっています。

d = 4 に対して考えられる経路

アリが最速経路を選んだ場合の合計所要時間を F(d) とします。 例えば、F(4) ≈ 2.960\\,516\\,287 です。 F(10) ≈ 4.668\\,187\\,834, F(100) ≈ 9.217\\,221\\,972 であることを確認できます。

F(10\\,000) を求めなさい。 回答は、四捨五入して小数第 9 位まで示すこと。

--hints--

antOnTheMove()18.420738199 を返す必要があります。

assert.strictEqual(antOnTheMove(), 18.420738199);

--seed--

--seed-contents--

function antOnTheMove() {

  return true;
}

antOnTheMove();

--solutions--

// solution required