* feat(tools): add seed/solution restore script * chore(curriculum): remove empty sections' markers * chore(curriculum): add seed + solution to Chinese * chore: remove old formatter * fix: update getChallenges parse translated challenges separately, without reference to the source * chore(curriculum): add dashedName to English * chore(curriculum): add dashedName to Chinese * refactor: remove unused challenge property 'name' * fix: relax dashedName requirement * fix: stray tag Remove stray `pre` tag from challenge file. Signed-off-by: nhcarrigan <nhcarrigan@gmail.com> Co-authored-by: nhcarrigan <nhcarrigan@gmail.com>
49 lines
1.4 KiB
Markdown
49 lines
1.4 KiB
Markdown
---
|
||
id: 5900f4f31000cf542c510006
|
||
title: 问题391:跳跃游戏
|
||
challengeType: 5
|
||
videoUrl: ''
|
||
dashedName: problem-391-hopping-game
|
||
---
|
||
|
||
# --description--
|
||
|
||
当将数字从0写入k到二进制时,令sk为1的数。例如,以二进制形式写0到5,我们有0,1,10,11,100,101。有7个1,所以s5 = 7.序列S = {sk:k≥0}开始{0,1 ,2,4,5,7,9,12,......}。
|
||
|
||
一个游戏由两个玩家玩。在游戏开始之前,选择数字n。计数器c从0开始。每转一圈,玩家选择一个从1到n(含)的数字,然后用该数字增加c。结果值c必须是S的成员。如果没有更多有效的移动,则玩家输掉。
|
||
|
||
例如:设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。
|
||
|
||
设M(n)是第一个玩家在第一个回合强制获胜时可以选择的最高数字,如果没有这样的移动则M(n)= 0。例如,M(2)= 2,M(7)= 1且M(20)= 4。
|
||
|
||
给定Σ(M(n))3 = 8150,1≤n≤20。
|
||
|
||
找Σ(M(n))3表示1≤n≤1000。
|
||
|
||
# --hints--
|
||
|
||
`euler391()`应该返回61029882288。
|
||
|
||
```js
|
||
assert.strictEqual(euler391(), 61029882288);
|
||
```
|
||
|
||
# --seed--
|
||
|
||
## --seed-contents--
|
||
|
||
```js
|
||
function euler391() {
|
||
|
||
return true;
|
||
}
|
||
|
||
euler391();
|
||
```
|
||
|
||
# --solutions--
|
||
|
||
```js
|
||
// solution required
|
||
```
|