คุณควรจะเขียนโปรแกรมหรือฟังก์ชั่นซึ่งจะเป็นจำนวนเต็มไม่เป็นลบN
เป็นอินพุตและเอาต์พุตหรือผลตอบแทนจำนวนเต็มสองจำนวน (ลบศูนย์หรือบวก) และX
Y
จำนวนเต็มมีความหมายในแง่คณิตศาสตร์เนื่องจากมีจำนวนไม่ จำกัด
ฟังก์ชั่นการใช้งานจะต้องมี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 U
U!=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 ซ้ำแล้วซ้ำอีก?