3.0 KiB
id | challengeType | title | videoUrl | localeTitle |
---|---|---|---|---|
5900f4b41000cf542c50ffc7 | 5 | Problem 328: Lowest-cost Search | Problema 328: Pesquisa de custo mais baixo |
Description
Se n = 3, o melhor que podemos fazer é obviamente perguntar o número "2". A resposta nos levará imediatamente a encontrar o número oculto (a um custo total = 2).
Se n = 8, podemos decidir usar um tipo de estratégia de "pesquisa binária": nossa primeira pergunta seria "4" e se o número oculto for maior que 4, precisaremos de uma ou duas perguntas adicionais. Deixe nossa segunda pergunta ser "6". Se o número escondido ainda for maior que 6, precisaremos de uma terceira pergunta para discriminar entre 7 e 8. Assim, nossa terceira pergunta será "7" e o custo total para esse cenário de pior caso será 4 + 6. + 7 = 17.
Podemos melhorar consideravelmente o custo do pior caso para n = 8, fazendo "5" como nossa primeira pergunta. Se nos disserem que o número oculto é maior que 5, nossa segunda pergunta será "7", então saberemos com certeza qual é o número oculto (para um custo total de 5 + 7 = 12). Se nos disserem que o número oculto é menor que 5, nossa segunda pergunta será "3" e se o número oculto for menor que 3, nossa terceira pergunta será "1", dando um custo total de 5 + 3 + 1 = 9 Desde 12> 9, o custo de pior caso para esta estratégia é 12. Isso é melhor do que o que alcançamos anteriormente com a estratégia de "pesquisa binária"; também é melhor ou igual a qualquer outra estratégia. Então, de fato, acabamos de descrever uma estratégia ótima para n = 8.
Seja C (n) o pior custo possível alcançado por uma estratégia ótima para n, como descrito acima. Assim, C (1) = 0, C (2) = 1, C (3) = 2 e C (8) = 12. Similarmente, C (100) = 400 e C (n) = 17575.
Encontre C (n).
Instructions
Tests
tests:
- text: <code>euler328()</code> deve retornar 260511850222.
testString: 'assert.strictEqual(euler328(), 260511850222, "<code>euler328()</code> should return 260511850222.");'
Challenge Seed
function euler328() {
// Good luck!
return true;
}
euler328();
Solution
// solution required