ปัญหา: Slot Machine Hacker จากFacebook Hacker Cup 2011 Round 1B
เป้าหมาย: รหัสสั้นที่สุดในภาษาที่คุณโปรดปรานโดยใช้ stdin / stdout คุณไม่สามารถสันนิษฐานได้ว่าgetRandomNumberมีการกำหนดเช่นโซลูชันของคุณต้องรวมเวอร์ชัน golfed ที่อาจเกิดขึ้นเป็นฟังก์ชันหรือด้วยวิธีอื่น
โซลูชันอ้างอิง: บน SO [ฉันเลือกของฉันเพราะใช้ stdin / stdout และฉันไม่แน่ใจเกี่ยวกับโซลูชันของ dave]
ข้อความปัญหามีดังนี้:
คุณเพิ่งเป็นเพื่อนกับคนที่เขียนซอฟต์แวร์สำหรับเครื่องสล็อต หลังจากออกไปเที่ยวกับเขาซักพักคุณจะสังเกตเห็นว่าเขามีความชอบในการแสดงความรู้เกี่ยวกับการทำงานของเครื่องสล็อต ในที่สุดคุณจะให้เขาอธิบายรายละเอียดที่แม่นยำเกี่ยวกับอัลกอริธึมที่ใช้กับเครื่องจักรเฉพาะยี่ห้อ อัลกอริทึมมีดังนี้:
int getRandomNumber() {
secret = (secret * 5402147 + 54321) % 10000001;
return secret % 1000;
}
ฟังก์ชันนี้คืนค่าตัวเลขจำนวนเต็มเป็น [0, 999] แต่ละหลักหมายถึงหนึ่งในสิบสัญลักษณ์ที่ปรากฏบนล้อระหว่างสถานะเครื่องจักรเฉพาะ ความลับถูกตั้งค่าเริ่มต้นเป็นค่าที่ไม่เป็นค่าลบที่ไม่รู้จักสำหรับคุณ
โดยการสังเกตการทำงานของเครื่องจักรนานพอคุณสามารถกำหนดค่าของความลับและทำนายผลลัพธ์ในอนาคต การรู้ผลลัพธ์ในอนาคตคุณจะสามารถเดิมพันได้อย่างชาญฉลาดและรับเงินจำนวนมาก
อินพุต
บรรทัดแรกของอินพุตประกอบด้วยจำนวนบวกT , จำนวนกรณีทดสอบ ตามด้วยกรณีทดสอบT แต่ละกรณีทดสอบประกอบด้วยเลขจำนวนเต็มบวกNจำนวนการสังเกตที่คุณทำ โทเค็นNถัดไปคือเลขจำนวนเต็มตั้งแต่ 0 ถึง 999 ที่อธิบายการสังเกตของคุณ
เอาท์พุต
สำหรับแต่ละกรณีทดสอบให้ส่งออก 10 ค่าถัดไปที่จะแสดงโดยเครื่องคั่นด้วยช่องว่าง หากลำดับที่คุณสังเกตเห็นไม่สามารถผลิตได้โดยเครื่องที่เพื่อนของคุณอธิบายให้คุณพิมพ์"Wrong machine"แทน หากคุณไม่สามารถกำหนดค่า 10 ถัดไปโดยไม่ซ้ำกันให้พิมพ์"Not enough observations"แทน
ข้อ จำกัด
- T = 20
- 1 ≤ N ≤ 100
- โทเค็นในอินพุตมีความยาวไม่เกิน 3 อักขระและมีเฉพาะตัวเลข 0-9
ตัวอย่างอินพุต
5
1 968
3 767 308 284
5 78 880 53 698 235
7 23 786 292 615 259 635 540
9 862 452 303 558 767 105 911 846 462
ตัวอย่างผลลัพธ์
Not enough observations
577 428 402 291 252 544 735 545 771 34
762 18 98 703 456 676 621 291 488 332
38 802 434 531 725 594 86 921 607 35
Wrong machine