Interviewstreet miał swój drugi CodeSprint w styczniu, który zawierał poniższe pytanie. Odpowiedź programowa jest opublikowana, ale nie zawiera wyjaśnienia statystycznego.
(Możesz zobaczyć oryginalny problem i opublikowane rozwiązanie, logując się na stronie Interviewstreet przy użyciu danych Google, a następnie przechodząc do problemu Monety na tej stronie ).
Monety Monety
Masz bezstronną monetę, którą chcesz podrzucać, dopóki nie zdobędziesz N kolejnych głów. Rzuciłeś monetą M razy i, co zaskakujące, wszystkie rzuty doprowadziły do głów.
Jaka jest oczekiwana liczba dodatkowych rzutów potrzebnych do zdobycia N kolejnych głów?
Dane wejściowe:
pierwszy wiersz zawiera liczbę przypadków T. Każda kolejna linia T zawiera dwie liczby N i M.
Dane wyjściowe:
linie wyjściowe T zawierające odpowiedź dla odpowiedniego przypadku testowego. Wydrukuj odpowiedź w zaokrągleniu do dokładnie 2 miejsc po przecinku.
Przykładowe dane wejściowe:
4
2 0
2 1
3 3
3 2
Wyjście próbki:
6,00
4,00
0,00
8,00
Przykładowe objaśnienia:
Jeśli N = 2, a M = 0, musisz ciągle podrzucać monetę, aż otrzymasz 2 kolejne głowy. Nietrudno wykazać, że potrzeba średnio 6 rzutów monetą.
Jeśli N = 2 i M = 1, potrzebujesz 2 kolejnych głów i masz już 1. Musisz rzucić jeszcze raz, bez względu na wszystko. W pierwszym rzucie, jeśli zdobędziesz głowy, to koniec. W przeciwnym razie musisz zacząć od nowa, ponieważ kolejne liczniki są zerowane, i musisz w dalszym ciągu podrzucać monetę, dopóki nie otrzymasz N = 2 kolejnych głów. Oczekiwana liczba rzutów monetą wynosi zatem 1 + (0,5 * 0 + 0,5 * 6) = 4,0. Jeśli N = 3 i M = 3, masz już 3 głowy, więc nie potrzebujesz już więcej rzutów.
Wszystkie matematyczne równania, które wymyśliłem, miały poprawne odpowiedzi dla przykładowych danych wejściowych wymienionych powyżej, ale były niepoprawne dla wszystkich innych zestawów wejściowych (które nie są znane). Wydaje się, że ich programowe rozwiązanie rozwiązuje problem zupełnie inaczej niż w mojej metodzie „próbuj wymyślić równanie”. Czy ktoś może wyjaśnić, jak wymyślić równanie, które to rozwiązałoby?