ความท้าทาย
สำหรับความท้าทายนี้คุณควรตรวจสอบว่าตัวเลขที่กำหนดอยู่ในชุดคันทอร์หรือไม่ ก่อนอื่นเรามากำหนดชุดคันทอร์กันก่อน
ก่อนอื่นให้เริ่มด้วยตัวเลขระหว่าง 0 ถึง 1 หมายเลขใด ๆ ที่อยู่นอกช่วงนี้ไม่ได้อยู่ในชุดคันทอร์ ทีนี้ลองแบ่งตัวเลขออกเป็นสามส่วนเท่า ๆ กัน: [0,1 / 3], [1 / 3,2 / 3], [2/3, 1] หมายเลขใด ๆ ที่ไม่อยู่ในช่วงของส่วนแรกและส่วนสุดท้ายไม่อยู่ในชุดคันทอร์ ตอนนี้คุณทำขั้นตอนนี้ซ้ำสำหรับกลุ่ม [0,1 / 3] และ [2/3, 1] จากนั้นคุณทำซ้ำในสิ่งที่เหลืออยู่ คุณทำเช่นนี้ตลอดไป ในท้ายที่สุดตัวเลขทั้งหมดที่เหลืออยู่จะอยู่ในชุดคันทอร์ นี่คือไดอะแกรมของการทำซ้ำหกครั้งแรก:
อินพุต
สองจำนวนเต็มและx
ตัวหารร่วมที่ยิ่งใหญ่ที่สุดของและเป็น 1 เว้นแต่y
0 < y < 2^15
0 <= x <= y
x
y
x == 0
เอาท์พุต
ความจริงถ้าx/y
อยู่ในชุดคันทอร์
เป็นเท็จหากx/y
ไม่ได้อยู่ในชุดคันทอร์
ตัวอย่าง
ตอนนี้เรามาดูตัวอย่างของตัวเลขที่อยู่ในชุดคันทอร์
1/3 -> true
มันอยู่ในขอบเขตและขอบเขตจะไม่ถูกลบออก
1/4 -> true
1/4
ไม่เคยอยู่ในช่วงกลางที่สามของส่วนแม้ว่ามันจะไม่เคยอยู่ในขอบเขตเช่นกัน ถ้าคุณทำตามเส้นทางของมันคุณจะพบว่ามันสลับกันระหว่างการอยู่ในส่วนที่หนึ่งและสามของส่วน
1/13 -> true
1/13
สลับระหว่างส่วนแรกแรกและสุดท้าย
1/5 -> false
1/5
ตรงกับบล็อกว่างเปล่าอันแรกของแถวที่สามในแผนภาพด้านบนระหว่าง 1/9 ถึง 2/9
กรณีทดสอบอื่น ๆ :
0/4 -> true
3/10 -> true
3/4 -> true
10/13 -> true
1/1 -> true
12/19 -> false
5/17 -> false
3/5 -> false
1/7 -> false
1/2 -> false
คุณสามารถลองตัวเลขอื่นด้วยตัวอย่างนี้:
วัตถุประสงค์
ผู้ที่มีจำนวนไบต์น้อยที่สุดจะเป็นผู้ชนะ
x == 0