← 完整题目索引

PROJECT EULER · #0391

跳跃游戏

Hopping Game

仅题目 · 待解原题 ↗

将 0 到 k 的数字以二进制形式写入时,设 sk 为 1 的数量。
例如,将0到5写入二进制,我们有0,1,10,11,100,101。有七个 1,所以 s5=7
序列 S={sk:k0} 开始于 {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)=2M(7)=1M(20)=4

可以验证 M(n)3=8150 对于 1n20

M(n)3 1n1000

题解待补充

这道题的题目已收录,解题思路、代码和答案将在后续补充。