Interviewstreet hatte im Januar ihren zweiten CodeSprint, der die folgende Frage enthielt. Die programmatische Antwort wird veröffentlicht, enthält jedoch keine statistische Erklärung.
(Sie können das ursprüngliche Problem und die veröffentlichte Lösung anzeigen, indem Sie sich mit Google Creds auf der Interviewstreet-Website anmelden und dann auf dieser Seite zum Coin Tosses-Problem wechseln .)
Münzwurf
Sie haben eine unvoreingenommene Münze, die Sie so lange werfen möchten, bis Sie N aufeinanderfolgende Köpfe erhalten. Sie haben die Münze M-mal geworfen und überraschenderweise haben alle Würfe zu Köpfen geführt.
Was ist die erwartete Anzahl zusätzlicher Würfe, die benötigt werden, bis Sie N aufeinanderfolgende Köpfe erhalten?
Eingabe:
Die erste Zeile enthält die Anzahl der Fälle T. Jede der nächsten T-Zeilen enthält zwei Zahlen N und M.
Ausgang:
Ausgang T Linien die Antwort für den entsprechenden Testfall enthält. Drucken Sie die Antwort auf genau 2 Dezimalstellen gerundet.
Probeneingabe:
4
2 0
2 1
3 3
3 2
Probenausgabe:
6.00
4.00
0.00
8.00
Beispielerklärungen:
Wenn N = 2 und M = 0, müssen Sie die Münze so lange werfen, bis Sie 2 aufeinanderfolgende Köpfe erhalten. Es ist nicht schwer zu zeigen, dass durchschnittlich 6 Münzwürfe erforderlich sind.
Wenn N = 2 und M = 1, benötigen Sie 2 aufeinanderfolgende Köpfe und haben bereits 1. Sie müssen noch einmal werfen, egal was passiert. In diesem ersten Wurf sind Sie fertig, wenn Sie Köpfe bekommen. Andernfalls müssen Sie neu beginnen, wenn der aufeinanderfolgende Zähler zurückgesetzt wird, und Sie müssen die Münze weiter werfen, bis Sie N = 2 aufeinanderfolgende Köpfe erhalten. Die erwartete Anzahl der Münzwürfe beträgt somit 1 + (0,5 * 0 + 0,5 * 6) = 4,0. Wenn N = 3 und M = 3, haben Sie bereits 3 Köpfe, sodass Sie keine weiteren Würfe mehr benötigen.
Alle mathematischen Gleichungen, die ich mir ausgedacht habe, hatten die richtigen Antworten für die oben aufgeführten Beispiel-Eingabedaten, waren jedoch für alle anderen Eingabesätze (die nicht bekannt sind) falsch. Ihre programmatische Lösung scheint das Problem ganz anders zu lösen als meine Methode, eine Gleichung zu entwickeln. Kann jemand bitte erklären, wie man eine Gleichung findet, die dies lösen würde?