A Interviewstreet teve seu segundo CodeSprint em janeiro, que incluía a pergunta abaixo. A resposta programática é publicada, mas não inclui uma explicação estatística.
(Você pode ver o problema original e a solução publicada fazendo login no site do Interviewstreet com creds do Google e, em seguida, acessando o problema Coin Tosses nesta página .)
Lançamentos de moedas
Você tem uma moeda imparcial que deseja continuar jogando até obter N cabeças consecutivas. Você jogou a moeda M vezes e, surpreendentemente, todos os lançamentos resultaram em cara.
Qual é o número esperado de lançamentos adicionais necessários até que você obtenha N cabeças consecutivas?
Entrada:
A primeira linha contém o número de casos T. Cada uma das próximas linhas T contém dois números N e M.
Saída:
Linhas T de saída contendo a resposta para o caso de teste correspondente. Imprima a resposta arredondada para exatamente 2 casas decimais.
Entrada de amostra:
4
2 0
2 1
3 3
3 2
Saída de amostra:
6,00
4,00
0,00
8,00
Exemplos de explicações:
Se N = 2 e M = 0, você deve continuar jogando a moeda até obter 2 cabeças consecutivas. Não é difícil mostrar que, em média, são necessários 6 sorteios.
Se N = 2 e M = 1, você precisa de 2 cabeças consecutivas e já possui 1. Você precisa atirar mais uma vez, não importa o quê. Nesse primeiro sorteio, se você tiver cara, está feito. Caso contrário, você precisará recomeçar, pois o contador consecutivo é redefinido e continuar jogando a moeda até obter N = 2 cabeças consecutivas. O número esperado de lançamentos de moedas é, portanto, 1 + (0,5 * 0 + 0,5 * 6) = 4,0 Se N = 3 e M = 3, você já tem 3 cabeças, portanto, não precisa mais jogar.
Todas as equações matemáticas que criei tinham as respostas corretas para os dados de entrada de amostra listados acima, mas estavam erradas para todos os outros conjuntos de entradas (que não são conhecidos). A solução programática deles parece resolver o problema de maneira bem diferente do meu método de tentar criar uma equação. Alguém pode explicar como chegar a uma equação que resolveria isso?