Interviewstreet ha avuto la sua seconda CodeSprint a gennaio che includeva la seguente domanda. La risposta programmatica viene pubblicata ma non include una spiegazione statistica.
(Puoi vedere il problema originale e la soluzione pubblicata accedendo al sito web Interviewstreet con i crediti di Google e quindi andando al problema Coin Tosses da questa pagina .)
Lancio della moneta
Hai una moneta imparziale che vuoi continuare a lanciare finché non ottieni N teste consecutive. Hai lanciato la moneta M volte e, sorprendentemente, tutti i lanci hanno portato alla testa.
Qual è il numero previsto di lanci aggiuntivi necessari fino ad ottenere N teste consecutive?
Input:
la prima riga contiene il numero di casi T. Ciascuna delle successive linee T contiene due numeri N e M.
Output:
linee T di output contenenti la risposta per il caso di test corrispondente. Stampa la risposta arrotondata con esattamente 2 decimali.
Esempio di input:
4
2 0
2 1
3 3
3 2
Uscita campione:
6,00
4,00
0,00
8,00
Spiegazioni di esempio:
Se N = 2 e M = 0, è necessario continuare a lanciare la moneta fino a quando non si ottengono 2 teste consecutive. Non è difficile dimostrare che in media sono necessari 6 lanci di monete.
Se N = 2 e M = 1, hai bisogno di 2 teste consecutive e ne hai già 1. Devi lanciare ancora una volta, qualunque cosa accada. In quel primo lancio, se ottieni la testa, hai finito. Altrimenti, è necessario ricominciare da capo, poiché il contatore consecutivo si azzera e è necessario continuare a lanciare la moneta fino ad ottenere N = 2 teste consecutive. Il numero previsto di lanci di monete è quindi 1 + (0,5 * 0 + 0,5 * 6) = 4,0 Se N = 3 e M = 3, hai già 3 teste, quindi non hai bisogno di altri lanci.
Tutte le equazioni matematiche che ho trovato avevano le risposte giuste per i dati di input di esempio elencati sopra, ma erano errate per tutti gli altri set di input (che non sono noti). La loro soluzione programmatica sembra risolvere il problema in modo molto diverso dal mio metodo di provare a trovare un'equazione. Qualcuno può spiegare come elaborare un'equazione che risolva questo problema?