สัมภาษณ์มี CodeSprint ที่สองของพวกเขาในเดือนมกราคมที่รวมคำถามด้านล่าง คำตอบแบบเป็นโปรแกรมจะโพสต์ แต่ไม่มีคำอธิบายทางสถิติ
(คุณสามารถดูปัญหาดั้งเดิมและวิธีแก้ปัญหาที่โพสต์ได้โดยลงชื่อเข้าใช้เว็บไซต์ Interviewstreet ด้วยเครดิต Google จากนั้นไปที่ปัญหา Coin Tosses จากหน้านี้)
โยนเหรียญ
คุณมีเหรียญที่ไม่ฝักใฝ่ฝ่ายใดซึ่งคุณต้องการที่จะโยนต่อไปจนกว่าจะได้รับ 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 หัวอยู่แล้วดังนั้นคุณไม่จำเป็นต้องทอยอีกต่อไป
สมการทางคณิตศาสตร์ทั้งหมดที่ฉันพบมีคำตอบที่ถูกต้องสำหรับข้อมูลอินพุตตัวอย่างที่แสดงไว้ด้านบน แต่ผิดสำหรับชุดอินพุตอื่นทั้งหมดของพวกเขา (ซึ่งไม่ทราบ) วิธีแก้ปัญหาเชิงโปรแกรมของพวกเขาดูเหมือนจะแก้ปัญหาได้แตกต่างจากวิธีการทดลองแบบสมการของฉัน มีใครช่วยอธิบายวิธีการแก้สมการที่จะแก้ปัญหานี้ได้ไหม