69 lines
1.8 KiB
Markdown
69 lines
1.8 KiB
Markdown
---
|
|
id: 5900f4da1000cf542c50ffed
|
|
title: 'Problema 366: Jogo da pedra III'
|
|
challengeType: 5
|
|
forumTopicId: 302027
|
|
dashedName: problem-366-stone-game-iii
|
|
---
|
|
|
|
# --description--
|
|
|
|
Dois jogadores, Anton e Bernhard, estão jogando o seguinte jogo.
|
|
|
|
Existe uma pilha de $n$ pedras.
|
|
|
|
O primeiro jogador pode remover qualquer número positivo de pedras, mas não a pilha toda.
|
|
|
|
Depois disso, cada jogador pode remover, no máximo, o dobro das pedras que seu oponente removeu no movimento anterior.
|
|
|
|
O jogador que remover a última pedra ganha.
|
|
|
|
Ex: $n = 5$
|
|
|
|
Se o primeiro jogador pegar mais do que uma pedra, o próximo jogador será capaz de pegar todas as pedras restantes.
|
|
|
|
Se o primeiro jogador pegar uma pedra, deixando quatro, o oponente dele pegará também uma pedra, deixando três pedras.
|
|
|
|
O primeiro jogador não pode pegar todas as três pedras restantes porque ele pode pegar no máximo $2 \times 1 = 2$ pedras. Então digamos que ele também leve uma pedra, deixando 2.
|
|
|
|
O segundo jogador pode pegar as duas pedras restantes e ganhar.
|
|
|
|
Portanto, 5 é uma posição em que o primeiro jogador perde.
|
|
|
|
Para algumas posições vencedoras, há mais de um movimento possível para o primeiro jogador.
|
|
|
|
Ex: quando $n = 17$, o primeiro jogador pode remover uma ou quatro pedras.
|
|
|
|
Considere $M(n)$ como o número máximo de pedras que o primeiro jogador pode remover em uma posição vencedora em seu primeiro movimento e $M(n) = 0$ para qualquer outra posição.
|
|
|
|
A $\sum M(n)$ para $n ≤ 100$ é 728.
|
|
|
|
Encontre a $\sum M(n)$ para $n ≤ {10}^{18}$. Dê sua resposta modulo ${10}^8$.
|
|
|
|
# --hints--
|
|
|
|
`stoneGameThree()` deve retornar `88351299`.
|
|
|
|
```js
|
|
assert.strictEqual(stoneGameThree(), 88351299);
|
|
```
|
|
|
|
# --seed--
|
|
|
|
## --seed-contents--
|
|
|
|
```js
|
|
function stoneGameThree() {
|
|
|
|
return true;
|
|
}
|
|
|
|
stoneGameThree();
|
|
```
|
|
|
|
# --solutions--
|
|
|
|
```js
|
|
// solution required
|
|
```
|