ฟังก์ชั่นถูกกล่าวว่ามีวัฏจักรของความยาว nหากมีxในโดเมนของมันเช่นนั้นf n (x) = xและf m (x) ≠ xสำหรับ0 <m <n , ที่nตัวยกnหมายถึงn - พับประยุกต์ใช้ฉ โปรดทราบว่าวงจรของความยาว1เป็นจุดคงที่f (x) = x
งานของคุณคือการดำเนินการbijectiveฟังก์ชั่นจากจำนวนเต็มกับตัวเองซึ่งมีตรงหนึ่งรอบของทุกความยาวบวกn ฟังก์ชั่น bijective คือการติดต่อแบบตัวต่อตัวเช่นจำนวนเต็มทุกค่าที่แมปกับครั้งเดียว มีอีกหนึ่งวงจรของความยาวnหมายถึงว่ามีตรงnตัวเลขที่แตกต่างกันxที่ฉn (x) = xและฉเมตร (x) ≠ xสำหรับ0 <ม <n
นี่คือตัวอย่างของสิ่งที่ฟังก์ชั่นดังกล่าวอาจมีลักษณะรอบx = 0 :
x ... -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 ...
f(x) ... 2 4 6 -3 -1 1 -4 0 -2 5 7 -7 -6 3 -5 ...
ข้อความที่ตัดตอนมานี้ประกอบด้วยวัฏจักรของความยาว1ถึง5 :
n cycle
1 0
2 -2 1
3 -4 -3 -1
4 -5 6 3 7
5 -7 2 5 -6 4
...
โปรดทราบว่าข้างต้นฉันใช้ "ฟังก์ชั่น" เฉพาะในเชิงคณิตศาสตร์ คุณสามารถเขียนฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบในภาษาที่คุณเลือกตราบใดที่ใช้จำนวนเต็ม (เซ็นชื่อ) เดียวเป็นอินพุตและส่งกลับจำนวนเต็มเดียว (เซ็นชื่อ) ตามปกติคุณสามารถรับอินพุตผ่าน STDIN อาร์กิวเมนต์บรรทัดคำสั่งอาร์กิวเมนต์ฟังก์ชัน ฯลฯ และเอาต์พุตผ่าน STDOUT ค่าส่งคืนฟังก์ชันหรืออาร์กิวเมนต์ฟังก์ชัน (ออก) เป็นต้น
แน่นอนว่าหลายภาษาไม่รองรับการใช้จำนวนเต็มอย่างแม่นยำ ไม่เป็นไรถ้าการใช้งานของคุณใช้ได้เฉพาะกับประเภทจำนวนเต็มในภาษาของคุณตราบใดที่ครอบคลุมช่วงอย่างน้อย[-127, 127]และมันจะใช้ได้กับจำนวนเต็มตามอำเภอใจหากประเภทจำนวนเต็มของภาษานั้นถูกแทนที่ด้วยกฎเกณฑ์ - จำนวนเต็มความแม่นยำ
ใช้กฎมาตรฐานของกอล์ฟ