В январе у Interviewstreet появился второй CodeSprint, в который вошел вопрос, приведенный ниже. Программный ответ опубликован, но не содержит статистического объяснения.
(Вы можете увидеть оригинальную проблему и помещаемые решение, зарегистрировавшись на сайт Interviewstreet с кредиткой Google , а затем идти к проблеме монет ворочаются с этой страницы .)
Монеты
У вас есть беспристрастная монета, которую вы хотите бросать, пока не получите N последовательных голов. Вы бросили монету M раз, и неожиданно все броски привели к головам.
Какое ожидаемое количество дополнительных бросков необходимо, пока вы не получите N последовательных голов?
Входные данные:
первая строка содержит количество случаев T. Каждая из следующих строк T содержит два числа N и M.
Выход:
Выведите T строк, содержащих ответ для соответствующего теста. Выведите ответ, округленный до 2 знаков после запятой.
Пример ввода:
4
2 0
2 1
3 3
3 2
Пример вывода:
6,00
4,00
0,00
8,00
Примеры объяснений:
если N = 2 и M = 0, вам нужно продолжать подбрасывать монету, пока не получите 2 головы подряд. Нетрудно показать, что в среднем требуется 6 бросков монет.
Если N = 2 и M = 1, вам нужно 2 последовательных головы и уже иметь 1. Вы должны бросить еще раз, несмотря ни на что. В этом первом броске, если у вас есть головы, все готово. В противном случае вам нужно начинать все сначала, когда счетчик сбрасывается подряд, и вы должны продолжать подбрасывать монету, пока не получите N = 2 последовательных головы. Таким образом, ожидаемое количество подбрасываний монет составляет 1 + (0,5 * 0 + 0,5 * 6) = 4,0. Если N = 3 и M = 3, у вас уже есть 3 головы, поэтому вам больше не нужно подбрасывать.
У всех математических уравнений, которые я придумал, были правильные ответы для приведенных выше примеров входных данных, но они были неправильными для всех других их входных наборов (которые не известны). Их программное решение, похоже, решает проблему совсем не так, как мой метод «попробуй придумать с уравнением». Может кто-нибудь объяснить, как придумать уравнение, которое решило бы это?