คุณควรจะเขียนโปรแกรมหรือฟังก์ชั่นซึ่งจะเป็นจำนวนเต็มไม่เป็นลบNเป็นอินพุตและเอาต์พุตหรือผลตอบแทนจำนวนเต็มสองจำนวน (ลบศูนย์หรือบวก) และXY
จำนวนเต็มมีความหมายในแง่คณิตศาสตร์เนื่องจากมีจำนวนไม่ จำกัด
ฟังก์ชั่นการใช้งานจะต้องมีbijective ซึ่งหมายความว่าสำหรับทุก ๆNการส่งออกจะมีX Yคู่ที่แตกต่างกันและทุกX Yคู่จะต้องส่งออกสำหรับการป้อนข้อมูลบางอย่างNนั่นคือทั้งหมดของคู่ต่อไปนี้ควรได้รับการส่งออกสำหรับบางส่วนN:
...
┌─────┬─────┬────┬────┬────┐
│-2 -2│-2 -1│-2 0│-2 1│-2 2│
├─────┼─────┼────┼────┼────┤
│-1 -2│-1 -1│-1 0│-1 1│-1 2│
├─────┼─────┼────┼────┼────┤
... │0 -2 │0 -1 │0 0 │0 1 │0 2 │ ...
├─────┼─────┼────┼────┼────┤
│1 -2 │1 -1 │1 0 │1 1 │1 2 │
├─────┼─────┼────┼────┼────┤
│2 -2 │2 -1 │2 0 │2 1 │2 2 │
└─────┴─────┴────┴────┴────┘
...
โปรดทราบว่าU Vและเป็นคู่ที่แตกต่างกันถ้าV UU!=V
รายละเอียด
- หากภาษาของคุณไม่รองรับจำนวนเต็มขนาดใหญ่โดยพลการมันก็ดี แต่อัลกอริทึมของคุณควรทำงานกับประเภทข้อมูลจำนวนเต็มขนาดใหญ่โดยพลการ
2^31-1รหัสของคุณยังคงควรสนับสนุนค่าที่ป้อนเข้าอย่างน้อย - หากคุณเลือกที่จะพิมพ์หรือส่งคืนเอาต์พุตเป็นสตริงไม่อนุญาตให้นำหน้า
0หรือ+สัญญาณใด ๆ มิฉะนั้นการแสดงค่าจำนวนเต็มมาตรฐานของภาษาของคุณก็ใช้ได้
ตัวอย่าง
หากงานนั้นจะทำให้ฟังก์ชัน bijective รับจำนวนเต็มNและลบหนึ่งจำนวนเต็มXทางออกอาจเป็นฟังก์ชัน
if (input mod 2 == 0) return N/2 else return -(N+1)/2,
ดำเนินการในบางภาษา ฟังก์ชั่นนี้ผลตอบแทนสำหรับX = 0 -1 1 -2 2...N = 0 1 2 3 4...

10=>11 12, 9=>10 11นี้ไม่ถูกต้องเพราะ 11 ซ้ำแล้วซ้ำอีก?