"กบตัวเต็มวัย" เป็นสัตว์ประหลาดที่กระโดดข้ามจำนวนเต็มจนกระทั่งมันมาถึง 3 หรือ 19 ...
โปรแกรมของคุณควรยอมรับจำนวนเต็มn
เป็นอินพุตและเอาต์พุตผลลัพธ์ของอัลกอริทึมด้านล่าง ( 3
หรือ19
)
สำหรับจำนวนเต็มที่กำหนดn >= 2
:
- อนุญาต
f
เป็นตำแหน่งของกบ มันถูกตั้งค่าเริ่มต้นเป็นn
- ถ้า
f = 3
หรือf = 19
: กบกระโดดหยุด -f
หยุดโปรแกรมและการส่งออก - ถ้า
f
เป็นสำคัญ:2×f-1
กบกระโดดไปยังตำแหน่งที่ กลับไปที่ขั้นตอนที่ 2 - ถ้า
f
คอมโพสิต: ขอd
เป็นf
ตัวหารที่ใหญ่ที่สุดf-d
กบกระโดดไปยังตำแหน่งที่ กลับไปที่ขั้นตอนที่ 2
ตัวอย่าง:
ตัวอย่างด้วยn = 5
:
5 > 9 > 6 > 3 stop
3
โปรแกรมควรเอาท์พุท
อีกตัวอย่างด้วยn = 23
:
23 > 45 > 40 > 35 > 28 > 21 > 14 > 7 > 13 > 25 > 20 > 15 > 10 > 5 > 9 > 6 > 3 stop
3
อีกครั้งโปรแกรมควรเอาท์พุท
กรณีทดสอบ:
10 => 3
74 => 19
94 => 3
417 => 3
991 => 19
9983 => 19
คุณสามารถสันนิษฐานได้1 < n < 1000000
(ฉันได้ตรวจสอบว่าโปรแกรมสิ้นสุดลงสำหรับค่าเหล่านี้)
3
หรือ19
เราสามารถเปลี่ยนรายการที่ 2 ได้ในอัลกอริทึมที่จะบอกว่าถ้ากบเข้าห่วงใด ๆ (เจอตำแหน่งที่เคยเห็นมาก่อน) จากนั้นก็หยุดการกระโดดและคืนค่าที่เล็กที่สุด สมาชิกของวงนั้น