| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | --- | 
					
						
							|  |  |  | id: 5900f4da1000cf542c50ffed | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | title: '問題 366: 石取りゲーム (3)' | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | challengeType: 5 | 
					
						
							|  |  |  | forumTopicId: 302027 | 
					
						
							|  |  |  | dashedName: problem-366-stone-game-iii | 
					
						
							|  |  |  | --- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # --description--
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | アントンとベルンハルトという名前の 2 人のプレイヤーが、次のようなゲームをしています。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | $n$ 個の石を積み上げた山が 1 つあります。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | 先手は、任意の正の整数分の石を取れますが、山全体を取ることはできません。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | その後、各プレイヤーは、対戦相手が直前に取った数の 2 倍までの数の石を取ります。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | 最後の石を取ったプレイヤーが勝者です。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | 例: $n = 5$ とします。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | 先手が 2 個以上の石を取った場合、後手は残りのすべての石を取ることができます。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | 先手が石を 1 個取り 4 個残した場合、後手も石を 1 個取ると 3 個残ります。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | 先手は多くとも $2 \times 1 = 2$ 個の石しか取れないので、3 個すべてを取ることはできません。 したがって、また石を 1 個取ると仮定します。残りは 2 個になります。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | 後手は、残っている 2 個の石を取れば勝つことができます。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | したがって、石が 5 個ある山は先手にとって敗北ポジション (必ず負ける状況) です。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | いくつかの勝利ポジションでは、先手が取り得る手は複数あります。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | 例: $n = 17$ の場合、先手は 1 個または 4 個の石を取ることができます。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | 先手が最初のターンで勝利ポジションから取れる石の最大数を $M(n)$ とし、他のすべてのポジションでは $M(n) = 0$ とします。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | $n ≤ 100$ のとき、$\sum M(n)$ = 728 です。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | $n ≤ {10}^{18}$ のとき、$\sum M(n)$ を求めなさい。 mod ${10}^8$ で答えること。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							|  |  |  | # --hints--
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 20:38:20 +05:30
										 |  |  | `stoneGameThree()` は `88351299` を返す必要があります。 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:00:18 +05:30
										 |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | assert.strictEqual(stoneGameThree(), 88351299); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # --seed--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## --seed-contents--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | function stoneGameThree() { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return true; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | stoneGameThree(); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # --solutions--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | // solution required | 
					
						
							|  |  |  | ``` |