Solução Informática – Nível Iniciante – Semana 11

por

Solução por Anita Ramos

Para esse problema, utilizaremos algumas ideias de probabilidade, uma função além da $$int main()$$ e alguns comandos mais práticos, como o de potenciação $$pow(x,y) =$$ $$x^y$$ e o de retornar um número como $$double$$.

Iniciando a programação então, após adicionar a biblioteca, temos a função $$double vamp()$$ que, baseado em três inteiros, retorna a probabilidade do Vampiro 1 ganhar, ou seja, nos retorna a resposta do problema. Antes, porém, veremos o que ocorre na $$int main()$$.

Na $$int main()$$, o programa funciona enquanto existir casos de testes, sempre lendo a entrada e zerando as variáveis $$cont1$$ e $$cont2$$. Depois disso, ele calcula para cada um dos vampiros, em quantas rodadas ele morreria, independente do dado ou do oponente, apenas descontando o valor de $$D$$ constantemente e armazenando a resposta em $$cont1$$ e $$cont2$$. Por fim, aciona-se a função $$vamp()$$ baseado nos valores de $$cont1$$, $$cont2$$ e $$AT$$ e imprimi-se a resposta final gerada por essa função.

Voltando agora para a função $$vamp()$$, entenderemos como ela funciona. Inicialmente, se o limite do dado é 3, ele automaticamente retorna $$\frac{cont1}{cont1+cont2}$$, sempre em formato de double, imprimindo posteriormente como porcentagem. No entanto, se o limite do dado não é 3, $$d$$ recebe o valor de $$\frac{1 – (possibilidades do dado – at)}{possibilidades do dado}$$, ou seja, recebe o valor de $$1 – $$(probabilidade do vampiro 2 ganhar no dado). Depois, $$d$$ recebe o valor de $$\frac{1-d}{d}$$, ou seja, $$\frac{a probabilidade do vampiro 1 ganhar pelo dado}{probabilidade do vampiro 2 ganhar pelo dado}$$. Por fim, retorna-se o valor da possibilidade do vampiro 1 ganhar, baseando na divisão de 1 – d^(qntd de rodadas para perder pela subtração de D) por 1 – d^(c1+c2), sendo o denominador, o total de possibilidades gerais.

Segue o código comentado para melhor compreensão da solução:

https://gist.github.com/anitainfo/68b9a34d1779972034031d1aaa77eb71