freeCodeCamp/curriculum/challenges/portuguese/08-coding-interview-prep/project-euler/problem-406-guessing-game.p...

2.8 KiB

id challengeType title videoUrl localeTitle
5900f5021000cf542c510015 5 Problem 406: Guessing Game Problema 406: Jogo de Adivinhação

Description

Estamos tentando encontrar um número oculto selecionado do conjunto de inteiros {1, 2, ..., n} fazendo perguntas. Cada número (pergunta) que pedimos, temos uma das três respostas possíveis: "Seu palpite é menor do que o número oculto" (e você tem um custo de a), ou "Seu palpite é maior que o número oculto" (e você incorrer em um custo de b), ou "Sim, é isso!" (e o jogo termina). Dado o valor de n, aeb, uma estratégia ótima minimiza o custo total para o pior caso possível.

Por exemplo, se n = 5, a = 2 e b = 3, então podemos começar por perguntar "2" como nossa primeira pergunta.

Se nos disserem que 2 é maior do que o número oculto (para um custo de b = 3), então temos certeza de que "1" é o número oculto (para um custo total de 3). Se nos dissermos que 2 é menor do que o número oculto (por um custo de a = 2), então nossa próxima pergunta será "4". Se nos disserem que 4 é maior que o número oculto (para um custo de b = 3), então temos certeza de que "3" é o número oculto (para um custo total de 2 + 3 = 5). Se nos disserem que 4 é menor do que o número oculto (por um custo de a = 2), então temos certeza de que "5" é o número oculto (para um custo total de 2 + 2 = 4). Assim, o custo de pior caso alcançado por esta estratégia é 5. Também pode ser mostrado que este é o menor custo de pior caso que pode ser alcançado. Então, de fato, acabamos de descrever uma estratégia ótima para os valores dados de n, a e b.

Seja C (n, a, b) o pior custo possível alcançado por uma estratégia ótima para os valores dados de n, a e b.

Aqui estão alguns exemplos: C (5, 2, 3) = 5 C (500, √2, √3) = 13.22073197 ... C (20000, 5, 7) = 82 C (2000000, √5, √7 ) = 49,63755955 ...

Seja Fk os números de Fibonacci: Fk = Fk-1 + Fk-2 com casos de base F1 = F2 = 1. Encontre ∑1≤k≤30 C (1012, √k, √Fk), e dê sua resposta arredondada para 8 casas decimais atrás do ponto decimal.

Instructions

Tests

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

Challenge Seed

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

euler406();

Solution

// solution required