Interviewstreet a eu son deuxième CodeSprint en janvier qui comprenait la question ci-dessous. La réponse programmatique est publiée mais ne comprend pas d'explication statistique.
(Vous pouvez voir le problème d'origine et la solution publiée en vous connectant au site Interviewstreet avec Google Creds, puis en accédant au problème Coin Tosses à partir de cette page .)
Lancer de pièces
Vous avez une pièce impartiale que vous souhaitez continuer à lancer jusqu'à ce que vous obteniez N têtes consécutives. Vous avez lancé la pièce M fois et, étonnamment, tous les lancers ont donné lieu à des têtes.
Quel est le nombre attendu de lancers supplémentaires nécessaires jusqu'à ce que vous obteniez N têtes consécutives?
Contribution:
La première ligne contient le nombre de cas T. Chacune des T lignes suivantes contient deux nombres N et M.
Production:
sortie T lignes contenant la réponse pour le cas de test correspondant. Imprimez la réponse arrondie à exactement 2 décimales.
Exemple d'entrée:
4
2 0
2 1
3 3
3 2
Exemple de sortie:
6,00
4,00
0,00
8,00
Exemples d'explications:
Si N = 2 et M = 0, vous devez continuer à lancer la pièce jusqu'à ce que vous obteniez 2 têtes consécutives. Il n'est pas difficile de montrer qu'en moyenne, 6 lancers de pièces sont nécessaires.
Si N = 2 et M = 1, vous avez besoin de 2 têtes consécutives et vous en avez déjà 1. Vous devez lancer une fois de plus quoi qu'il arrive. Dans ce premier lancer, si vous obtenez des têtes, vous avez terminé. Sinon, vous devez recommencer, car le compteur consécutif se réinitialise, et vous devez continuer à lancer la pièce jusqu'à ce que vous obteniez N = 2 têtes consécutives. Le nombre attendu de lancers de pièces est donc de 1 + (0,5 * 0 + 0,5 * 6) = 4,0 Si N = 3 et M = 3, vous avez déjà 3 têtes, vous n'avez donc plus besoin de lancer.
Toutes les équations mathématiques que j'ai trouvées avaient les bonnes réponses pour les données d'entrée d'échantillon énumérées ci-dessus, mais elles étaient incorrectes pour tous leurs autres ensembles d'entrée (qui ne sont pas connus). Leur solution programmatique semble résoudre le problème bien différemment de ma méthode d'essayer de trouver une équation. Quelqu'un peut-il expliquer comment trouver une équation qui pourrait résoudre ce problème?