"มดหลัก" เป็นสัตว์ดื้อรั้นที่นำทางจำนวนเต็มและหารพวกมันจนกว่าจะเหลือเฉพาะช่วงเวลาเท่านั้น!
เริ่มแรกเรามีอาร์เรย์อนันต์ A ที่มีจำนวนเต็มทั้งหมด> = 2: [2,3,4,5,6,.. ]
อนุญาตpเป็นตำแหน่งของมดในอาร์เรย์ เริ่มแรกp = 0(อาเรย์ถูกทำดัชนี 0)
แต่ละเทิร์นมดจะเคลื่อนที่ดังนี้:
- ถ้า
A[p]เป็นไพรม์มดจะย้ายไปยังตำแหน่งถัดไป:p ← p+1 - มิฉะนั้นถ้า
A[p]เป็นจำนวนคอมโพสิตให้qเป็นตัวหารเล็ก> 1. เราแบ่งA[p]โดยq, และเราเพิ่มไปqA[p-1]มดเคลื่อนไปยังตำแหน่งก่อนหน้า:p ← p-1
นี่เป็นท่าแรกสำหรับมด:
2 3 4 5 6 7 8 9 ...
^
2 3 4 5 6 7 8 9 ...
^
2 3 4 5 6 7 8 9 ...
^
2 5 2 5 6 7 8 9 ...
^
2 5 2 5 6 7 8 9 ...
^
2 5 2 5 6 7 8 9 ...
^
2 5 2 5 6 7 8 9 ...
^
2 5 2 7 3 7 8 9 ...
^
โปรแกรมของคุณควรออกตำแหน่งของมดหลังจากnเคลื่อนไหว (คุณสามารถสันนิษฐานได้n <= 10000)
กรณีทดสอบ:
0 => 0
10 => 6
47 => 9
4734 => 274
10000 => 512
แก้ไข นอกจากนี้คุณยังสามารถใช้รายการที่มีการจัดทำดัชนี 1 รายการซึ่งสามารถแสดงผลลัพธ์ 1, 7, 10, 275, 513 สำหรับกรณีทดสอบข้างต้น
นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่มีรหัสสั้นที่สุดเป็นไบต์จะเป็นผู้ชนะ
nหรือไม่หรือว่าเคสคอมโพสิตสามารถผลักมดไปทางซ้ายของเริ่มต้น2ได้หรือไม่
1,7,10,275,513หากมีการระบุ 1 ดัชนี? หรือพวกเขาจะยังคงต้องตรงกับผลลัพธ์ของคุณ
