ในการทำโจทย์ข้อนี้ เราต้องพยายามแปลความหมายเงื่อนไข
- จำนวนในลำดับทุกจำนวนหารด้วย 1001 ลงตัว
- จำนวนในลำดับเป็นตัวประกอบของ 1001K
- ผลคูณของทุกจำนวนในลำดับมีค่าเท่ากับ 1001N
ให้กลายเป็นเงื่อนไขที่ง่ายขึ้น
ก่อนอื่น เพื่อความสะดวก สมมุติให้โจทย์บังคับว่าเราต้องสร้างลำดับความยาว L ตัวเท่านั้น
สังเกตว่า 1001=7×11×13
สมาชิกแต่ละตัวในลำดับ IOOI จะต้องเขียนในรูป 7ai11bi13ci โดยที่ 1≤ai,bi,ci≤K เท่านั้น จึงจะเป็นหารด้วย 1001 ลงตัวตามเงื่อนไขที่ 1 และเป็นตัวประกอบของ 1001K (หาร 1001K ลงตัว) ตามเงื่อนไขที่ 2
ผลรวมเลขชี้กำลังของ 7 ของสมาชิกแต่ละตัวต้องรวมกันได้ N พอดี (a1+a2+a3+⋯+aL=N) เช่นเดียวกับผลรวมเลขชี้กำลังของ 11 (b1+b2+b3+⋯+bL=N) และผลรวมเลขชี้กำลังของ 13 (c1+c2+c3+⋯+cL=N) เมื่อเป็นเช่นนี้แล้ว ผลคูณของสมาชิกในลำดับจะเป็น 7a1+a2+⋯+aL11b1+b2+⋯+bL13c1+c2+⋯+cL=7N11N13N=1001N ตามเงื่อนไขที่ 3
ดังนั้น โจทย์ข้อนี้คือการนับว่าเราสามารถสร้างลำดับ (ai), (bi), (ci) ความยาว L ขึ้นมาได้ทั้งหมดกี่แบบ โดยจะต้องตรงตามเงื่อนไข
- 1≤ai,bi,ci≤K
- a1+a2+a3+⋯+aL=N
- b1+b2+b3+⋯+bL=N
- c1+c2+c3+⋯+cL=N
สังเกตว่าทั้งสามลำดับมีเงื่อนไขเหมือนกันและเราสามารถสร้างสามลำดับนี้ได้โดยอิสระต่อกัน ดังนั้น เราจะพิจารณาคำนวณแค่จำนวนวิธีการสร้างลำดับ (ai) เท่านั้น แล้วนำคำตอบไปยกกำลังสาม
นิยามให้ dpi,j หมายถึงวิธีสร้างลำดับความยาว i ที่สมาชิกแต่ละตัวเป็นจำนวนเต็มระหว่าง 1 ถึง K และรวมกันเท่ากับ N พอดี
Base case ได้แก่
- dp0,0=1
- dp0,j=0 สำหรับ j=0
- dpi,j=0 สำหรับ j≤0
เราสามารถเขียน recurrence formula สำหรับกรณี i>0 และ j>0 ได้ว่า
dpi,j=v=1∑v=Kdpi−1,j−v
(หากกำหนดให้ ai=v เราจะสามารถสร้างลำดับ a1..(i−1) ได้ dpi−1,j−v วิธี เนื่องจากเราสามารถเลือก v อะไรก็ได้ จำนวนวิธีทั้งหมดคือผลรวมจำนวนวิธีกรณี v=1,2,3,…,K)
เพื่อความรวดเร็วในการคำนวณ เราสามารถกำหนด prefix sum qsi,j=dpi,1+dpi,2+⋯+dpi,j ขึ้นมา ทำให้พจน์ v=1∑v=Kdpi−1,j−v สามารถคำนวณได้จาก qsi−1,j−1−qsi−1,max{0,j−K−1}
ดังนั้น เราสามารถสร้างลำดับ (ai), (bi), (ci) ความยาว L ขึ้นมาได้ทั้งหมด (dpL,N)3 วิธี
เนื่องจากโจทย์อนุญาตให้เราสร้างลำดับความยาว L เท่ากับเท่าใดก็ได้ (ซึ่งไม่เกิน N) ดังนั้น คำตอบสุดท้ายคือ
L=1∑L=N(dpL,N)3
ทั้งนี้อย่าลืมคำนวณเลขทั้งหมดใน modulo 2553 และระวังไม่ให้เกิดจำนวนติดลบขึ้น