56 lines
2.6 KiB
Markdown
56 lines
2.6 KiB
Markdown
|
---
|
|||
|
id: 5900f4f31000cf542c510006
|
|||
|
challengeType: 5
|
|||
|
title: 'Problem 391: Hopping Game'
|
|||
|
videoUrl: ''
|
|||
|
localeTitle: 'Проблема 391: Хоппинг'
|
|||
|
---
|
|||
|
|
|||
|
## Description
|
|||
|
<section id="description"> Пусть sk - число 1 при записи чисел от 0 до k в двоичном формате. Например, записывая от 0 до 5 в двоичном формате, мы имеем 0, 1, 10, 11, 100, 101. Есть семь 1, поэтому s5 = 7. Последовательность S = {sk: k ≥ 0} начинается {0, 1 , 2, 4, 5, 7, 9, 12, ...}. <p> В игре играют два игрока. Перед началом игры выбирается номер n. Счетчик c начинается с 0. На каждом шагу игрок выбирает число от 1 до n (включительно) и увеличивает c на это число. Результирующее значение c должно быть членом S. Если больше нет действительных ходов, игрок проигрывает. </p><p> Например: пусть n = 5. c начинается с 0. Игрок 1 выбирает 4, поэтому c становится 0 + 4 = 4. Игрок 2 выбирает 5, поэтому c становится 4 + 5 = 9. Игрок 1 выбирает 3, поэтому c становится 9 + 3 = 12. и т. Д. Обратите внимание, что c всегда должно принадлежать S, и каждый игрок может увеличить c не более чем на n. </p><p> Пусть M (n) - наибольшее число, которое первый игрок может выбрать при первом повороте, чтобы заставить победить, а M (n) = 0, если такого движения нет. Например, M (2) = 2, M (7) = 1 и M (20) = 4. </p><p> Для Σ (M (n)) 3 = 8150 для 1 ≤ n ≤ 20. </p><p> Найти Σ (M (n)) 3 для 1 ≤ n ≤ 1000. </p></section>
|
|||
|
|
|||
|
## Instructions
|
|||
|
<section id="instructions">
|
|||
|
</section>
|
|||
|
|
|||
|
## Tests
|
|||
|
<section id='tests'>
|
|||
|
|
|||
|
```yml
|
|||
|
tests:
|
|||
|
- text: <code>euler391()</code> должен вернуть 61029882288.
|
|||
|
testString: 'assert.strictEqual(euler391(), 61029882288, "<code>euler391()</code> should return 61029882288.");'
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
</section>
|
|||
|
|
|||
|
## Challenge Seed
|
|||
|
<section id='challengeSeed'>
|
|||
|
|
|||
|
<div id='js-seed'>
|
|||
|
|
|||
|
```js
|
|||
|
function euler391() {
|
|||
|
// Good luck!
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
euler391();
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</section>
|
|||
|
|
|||
|
## Solution
|
|||
|
<section id='solution'>
|
|||
|
|
|||
|
```js
|
|||
|
// solution required
|
|||
|
```
|
|||
|
</section>
|