2022-01-21 01:00:18 +05:30
|
|
|
---
|
|
|
|
id: 5900f51d1000cf542c51002f
|
2022-01-22 20:38:20 +05:30
|
|
|
title: '問題 433: ユークリッドの互除法のステップ数'
|
2022-01-21 01:00:18 +05:30
|
|
|
challengeType: 5
|
|
|
|
forumTopicId: 302104
|
|
|
|
dashedName: problem-433-steps-in-euclids-algorithm
|
|
|
|
---
|
|
|
|
|
|
|
|
# --description--
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
$x_0$ と $y_0$ の最大公約数をユークリッドの互除法によって決定するために必要なステップ数を、$E(x_0, y_0)$ とします。 より形式的に表すと、次のようになります。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-04-02 14:16:30 +05:30
|
|
|
$$\begin{align} & x_1 = y_0, y_1 = x_0\bmod y_0 \\\\
|
|
|
|
& x_n = y_{n - 1}, y_n = x_{n - 1}\bmod y_{n - 1} \end{align}$$
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
$E(x_0, y_0)$ は $y_n = 0$ となるような最小の $n$ です。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
$E(1, 1) = 1$, $E(10, 6) = 3$, $E(6, 10) = 4$ が与えられます。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
$1 ≤ x$, $y ≤ N$ のとき、$E(x, y)$ の和を $S(N)$ と定義します。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
$S(1) = 1$, $S(10) = 221$, $S(100) = 39\\,826$ が与えられます。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
$S(5 \times {10}^6)$ を求めなさい。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
# --hints--
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
`stepsInEuclidsAlgorithm()` は `326624372659664` を返す必要があります。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
```js
|
|
|
|
assert.strictEqual(stepsInEuclidsAlgorithm(), 326624372659664);
|
|
|
|
```
|
|
|
|
|
|
|
|
# --seed--
|
|
|
|
|
|
|
|
## --seed-contents--
|
|
|
|
|
|
|
|
```js
|
|
|
|
function stepsInEuclidsAlgorithm() {
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
stepsInEuclidsAlgorithm();
|
|
|
|
```
|
|
|
|
|
|
|
|
# --solutions--
|
|
|
|
|
|
|
|
```js
|
|
|
|
// solution required
|
|
|
|
```
|