freeCodeCamp/curriculum/challenges/portuguese/08-coding-interview-prep/project-euler/problem-366-stone-game-iii....

2.0 KiB

id challengeType title videoUrl localeTitle
5900f4da1000cf542c50ffed 5 Problem 366: Stone Game III Problema 366: Stone Game III

Description

Dois jogadores, Anton e Bernhard, estão jogando o seguinte jogo. Há uma pilha de n pedras. O primeiro jogador pode remover qualquer número positivo de pedras, mas não a pilha inteira. Depois disso, cada jogador pode remover no máximo duas vezes o número de pedras que seu oponente tomou no movimento anterior. O jogador que remover a última pedra ganha.

Por exemplo, n = 5 Se o primeiro jogador levar mais de uma pedra, o próximo jogador poderá receber todas as pedras restantes. Se o primeiro jogador pegar uma pedra, deixando quatro, seu oponente também pegará uma pedra, deixando três pedras. O primeiro jogador não pode pegar todos os três, porque ele pode levar no máximo 2x1 = 2 pedras. Então, digamos que ele também tome uma pedra, deixando 2. O segundo jogador pode pegar as duas pedras restantes e ganhar. Então, 5 é uma posição perdida para o primeiro jogador. Para algumas posições vencedoras, há mais de um lance possível para o primeiro jogador. Por exemplo, quando n = 17 o primeiro jogador pode remover uma ou quatro pedras.

Seja M (n) o número máximo de pedras que o primeiro jogador pode tirar de uma posição vencedora em seu primeiro turno e M (n) = 0 para qualquer outra posição.

(M (n) para n≤100 é 728.

Encontre ∑M (n) para n≤1018. Dê sua resposta módulo 108.

Instructions

Tests

tests:
  - text: <code>euler366()</code> deve retornar 88351299.
    testString: 'assert.strictEqual(euler366(), 88351299, "<code>euler366()</code> should return 88351299.");'

Challenge Seed

function euler366() {
  // Good luck!
  return true;
}

euler366();

Solution

// solution required