Interviewstreet đã có CodeSprint thứ hai vào tháng 1 bao gồm câu hỏi dưới đây. Câu trả lời theo chương trình được đăng nhưng không bao gồm phần giải thích thống kê.
(Bạn có thể xem vấn đề ban đầu và giải pháp được đăng bằng cách đăng nhập vào trang web Interviewstreet bằng các khoản tín dụng của Google và sau đó chuyển đến vấn đề Coin Tosses từ trang này .)
Tiền xu
Bạn có một đồng xu không thiên vị mà bạn muốn tiếp tục tung cho đến khi bạn nhận được N đầu liên tiếp. Bạn đã ném đồng xu M lần và thật ngạc nhiên, tất cả các lần ném đều dẫn đến kết quả.
Số lần ném bổ sung cần thiết cho đến khi bạn nhận được N đầu liên tiếp là bao nhiêu?
Đầu vào:
Dòng đầu tiên chứa số trường hợp T. Mỗi dòng T tiếp theo chứa hai số N và M.
Đầu ra:
Đầu ra T dòng chứa câu trả lời cho trường hợp thử nghiệm tương ứng. In câu trả lời làm tròn đến đúng 2 chữ số thập phân.
Nhập mẫu:
4
2 0
2 1
3 3
3 2
Output mẫu:
6,00
4,00
0,00
8,00
Giải thích mẫu:
Nếu N = 2 và M = 0, bạn cần tiếp tục tung đồng xu cho đến khi bạn nhận được 2 đầu liên tiếp. Không khó để chỉ ra rằng trung bình, cần 6 lần tung đồng xu.
Nếu N = 2 và M = 1, bạn cần 2 đầu liên tiếp và đã có 1. Bạn cần phải ném một lần nữa bất kể điều gì. Trong lần ném đầu tiên đó, nếu bạn nhận được đầu, bạn đã hoàn thành. Mặt khác, bạn cần bắt đầu lại, vì bộ đếm liên tiếp đặt lại và bạn cần tiếp tục tung đồng xu cho đến khi bạn nhận được N = 2 đầu liên tiếp. Do đó, số lần tung đồng xu dự kiến là 1 + (0,5 * 0 + 0,5 * 6) = 4.0 Nếu N = 3 và M = 3, bạn đã có 3 đầu, do đó bạn không cần thêm lần tung nào nữa.
Tất cả các phương trình toán học mà tôi đã đưa ra đều có câu trả lời đúng cho dữ liệu đầu vào mẫu được liệt kê ở trên, nhưng đã sai đối với tất cả các bộ đầu vào khác của chúng (không được biết). Giải pháp lập trình của họ dường như giải quyết vấn đề khác xa so với phương pháp thử phương pháp cố gắng của tôi. Ai đó có thể vui lòng giải thích làm thế nào để đưa ra một phương trình sẽ giải quyết điều này?