Mirko มีแอปเปิ้ลแดง (R) และแอปเปิ้ลเขียว (G) เพื่อแบ่งปันให้กับเพื่อน ๆ ของเขา โดยเขาจะแบ่งแอปเปิ้ลแดงในจำนวนที่เท่ากันและแอปเปิ้ลเขียวในจำนวนที่เท่ากันให้กับเพื่อนทุก ๆ คน Mirko ไม่ชอบแอปเปิ้ล ดังนั้น เขาจึงไม่ต้องการที่จะเหลือแอปเปิ้ลไว้ให้กับตัวเขาเองหลังจากแบ่งเสร็จ
ยกตัวอย่างเช่น ถ้า Mirko มีแอปเปิ้ลแดง 4 ลูกและแอปเปิ้ลเขียว 8 ลูก เขาจะแบ่งแอปเปิ้ลเหล่านี้ให้กับเพื่อน ๆ ของเขาได้ทั้งหมด 3 วิธี ดังนี้
- แบ่งให้กับเพื่อนเพียงคนเดียว ซึ่งเพื่อนคนนั้นจะได้รับแอปเปิ้ลแดงทั้ง 4 ลูกและแอปเปิ้ลเขียวทั้ง 8 ลูก
- แบ่งให้กับเพื่อน 2 คน ซึ่งแต่ละคนจะได้รับแอปเปิ้ลแดง 2 ลูกและแอปเปิ้ลเขียว 4 ลูก
- แบ่งให้กับเพื่อน 4 คน ซึ่งแต่ละคนจะได้รับแอปเปิ้ลแดง 1 ลูกและแอปเปิ้ลเขียว 2 ลูก
งานของคุณ
จงเขียนโปรแกรมเพื่อแสดงผลจำนวนวิธีทั้งหมดที่ Mirko สามารถแบ่งแอปเปิ้ลให้กับเพื่อน ๆ ของเขาได้ โดยสมมติว่า Mirko มีเพื่อนจำนวนมากมายมหาศาลในการแบ่งปันแอปเปิ้ลให้
ข้อมูลนำเข้า
ในบรรทัดแรก ประกอบด้วยเลขจำนวนเต็ม 2 ค่าคือ จำนวนของแอปเปิ้ลแดง (R) และจำนวนของแอปเปิ้ลเขียว (G) ซึ่งคั่นกันด้วยช่องว่าง โดยมีค่าดังนี้ 1 ≤ R, G ≤ 1000000000
ข้อมูลส่งออก
ในแต่ละครั้งของการแบ่งแอปเปิ้ลที่เป็นไปได้ ให้แสดงผลเลขจำนวนเต็ม 3 ค่าคือ N, X และ Y บนบรรทัดเดียวกัน โดย N คือจำนวนของเพื่อนที่ได้รับการแบ่งแอปเปิ้ล ส่วน X และ Y คือจำนวนแอปเปิ้ลแดงและแอปเปิ้ลเขียวที่เพื่อนแต่ละคนได้รับ
ให้แสดงผลของการแบ่งแอปเปิ้ลแบบเดียวกันเพียงแค่ครั้งเดียว โดยจะต้องเรียงลำดับข้อมูลส่งออกดังนี้
- เรียงตามค่า N จากน้อยไปมาก
- หากค่า N เท่ากัน ให้เรียงตามค่า X จากน้อยไปมาก
- หากค่า N และ X เท่ากัน ให้เรียงตามค่า Y จากน้อยไปมาก
** ถ้าสังเกตดีดีจะพบว่าไม่ทางที่ X หรือ Y จะเท่ากันได้ lol
ที่มา: COCI 2008/2009, Contest #5 – February 7, 2009 :: ดัดแปลงเล็กน้อย (:
ตัวอย่างข้อมูลนำเข้า | ตัวอย่างข้อมูลส่งออก |
4 8 | 1 4 8
2 2 4
4 1 2 |
15 12 | 1 15 12
3 5 4 |
42 105 | 1 42 105
3 14 35
7 6 15
21 2 5 |
ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้