"มดหลัก" เป็นสัตว์ดื้อรั้นที่นำทางจำนวนเต็มและหารพวกมันจนกว่าจะเหลือเฉพาะช่วงเวลาเท่านั้น!
เริ่มแรกเรามีอาร์เรย์อนันต์ A ที่มีจำนวนเต็มทั้งหมด> = 2: [2,3,4,5,6,.. ]
อนุญาตp
เป็นตำแหน่งของมดในอาร์เรย์ เริ่มแรกp = 0
(อาเรย์ถูกทำดัชนี 0)
แต่ละเทิร์นมดจะเคลื่อนที่ดังนี้:
- ถ้า
A[p]
เป็นไพรม์มดจะย้ายไปยังตำแหน่งถัดไป:p ← p+1
- มิฉะนั้นถ้า
A[p]
เป็นจำนวนคอมโพสิตให้q
เป็นตัวหารเล็ก> 1. เราแบ่งA[p]
โดยq
, และเราเพิ่มไปq
A[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 ดัชนี? หรือพวกเขาจะยังคงต้องตรงกับผลลัพธ์ของคุณ