คุณได้รวบรวมข้อมูลจากAdvanced Collecting Device Controller ™มาเป็นเวลานาน คุณตรวจสอบบันทึกและความสยองขวัญของคุณคุณพบว่ามีบางอย่างผิดปกติอย่างยิ่ง: ข้อมูลมีเพียงจำนวนบิตสุดท้าย!
โชคดีที่คุณรู้ค่าเริ่มต้นและค่าไม่เปลี่ยนแปลงอย่างรวดเร็ว นั่นหมายความว่าคุณสามารถกู้คืนที่เหลือโดยเพียงแค่ค้นหาระยะทางจากจุดเริ่มต้น
ท้าทาย
คุณจะเขียนโปรแกรมหรือฟังก์ชั่นในการคำนวณจำนวนเงินที่เป็นค่าที่มีการเปลี่ยนแปลงได้รับการโมดูลัสN
และรายชื่อของค่ากลาง N
modulo
การเปลี่ยนแปลงระหว่างตัวเลขทุกคู่จะน้อยกว่าเสมอN/2
ดังนั้นจะมีคำตอบที่ถูกต้องเพียงข้อเดียวสำหรับแต่ละกรณีทดสอบ
คุณจะได้รับเป็นอินพุตจำนวนเต็มN
> 2 และรายการค่าในรูปแบบที่คุณเลือก อินพุตอาจถูกกำหนดผ่าน STDIN หรือบรรทัดรับคำสั่งหรืออาร์กิวเมนต์ของฟังก์ชัน
คุณจะส่งออกจำนวนเต็มเดียวจำนวนเงินที่มีการเปลี่ยนแปลงค่าเดิม เอาต์พุตอาจถูกพิมพ์ไปที่ STDOUT หรือส่งคืน
กฎระเบียบ
- โปรแกรมต้องทำงานของคุณสำหรับระยะทางใด ๆ
2^20
และโมดูลัสน้อยกว่า - คุณอาจคิดว่า:
N
3
เป็นอย่างน้อย- รายการมีค่าอย่างน้อย 2 ค่า
- ค่าทั้งหมดในรายการอย่างน้อย 0
N
และน้อยกว่า N/2
การเปลี่ยนแปลงทั้งหมดในจำนวนที่น้อยกว่า
- สิ่งอื่นใดคืออินพุตที่ไม่ถูกต้องและโปรแกรมของคุณอาจทำสิ่งที่มันต้องการ
- ช่องโหว่มาตรฐานห้องสมุดที่ไม่ได้มาตรฐานและฟังก์ชั่นในตัวสำหรับจุดประสงค์ที่แน่นอนนี้เป็นสิ่งต้องห้าม
- นี่คือโค้ดกอล์ฟดังนั้นโปรแกรมที่สั้นที่สุดในหน่วยไบต์ชนะ
ตัวอย่างกรณีทดสอบ
การป้อนข้อมูล:
3
0 1 2 2 0 1 0 2 1 2 0 1 2 1 1
เอาท์พุท:
4
คำอธิบาย (พร้อมค่าตัวอย่าง):
Value mod 3: 0 1 2 2 0 1 0 2 1 2 0 1 2 1 1
Value: 0 1 2 2 3 4 3 2 1 2 3 4 5 4 4
การป้อนข้อมูล:
10
5 2 8 9 5
เอาท์พุท:
-10
คำอธิบาย (พร้อมค่าตัวอย่าง):
Value mod 10: 5 2 8 9 5
Value: 15 12 8 9 5
อินพุตไม่ถูกต้อง:
2
0 0 0 0 0
(มอดุลัสเล็กเกินไป)
6
2 5 4 2
(เปลี่ยนแปลงมากเกินไประหว่าง 2 และ 5)
:^;[5 2 8 9 5](\
อย่างไร