ลำดับไอโอโอไอ (IOOI_sequence)

1126

ในการทำโจทย์ข้อนี้ เราต้องพยายามแปลความหมายเงื่อนไข

  1. จำนวนในลำดับทุกจำนวนหารด้วย 10011001 ลงตัว
  2. จำนวนในลำดับเป็นตัวประกอบของ 1001K1001^K
  3. ผลคูณของทุกจำนวนในลำดับมีค่าเท่ากับ 1001N1001^N

ให้กลายเป็นเงื่อนไขที่ง่ายขึ้น

ก่อนอื่น เพื่อความสะดวก สมมุติให้โจทย์บังคับว่าเราต้องสร้างลำดับความยาว LL ตัวเท่านั้น

สังเกตว่า 1001=7×11×131001 = 7 \times 11 \times 13

สมาชิกแต่ละตัวในลำดับ IOOI จะต้องเขียนในรูป 7ai11bi13ci7^{a_i} 11^{b_i} 13^{c_i} โดยที่ 1ai,bi,ciK1 \leq a_i, b_i, c_i \leq K เท่านั้น จึงจะเป็นหารด้วย 10011001 ลงตัวตามเงื่อนไขที่ 1 และเป็นตัวประกอบของ 1001K1001^K (หาร 1001K1001^K ลงตัว) ตามเงื่อนไขที่ 2

ผลรวมเลขชี้กำลังของ 77 ของสมาชิกแต่ละตัวต้องรวมกันได้ NN พอดี (a1+a2+a3++aL=Na_1+a_2+a_3+\dots+a_L = N) เช่นเดียวกับผลรวมเลขชี้กำลังของ 1111 (b1+b2+b3++bL=Nb_1+b_2+b_3+\dots+b_L = N) และผลรวมเลขชี้กำลังของ 1313 (c1+c2+c3++cL=Nc_1+c_2+c_3+\dots+c_L = N) เมื่อเป็นเช่นนี้แล้ว ผลคูณของสมาชิกในลำดับจะเป็น 7a1+a2++aL11b1+b2++bL13c1+c2++cL=7N11N13N=1001N7^{a_1+a_2+\dots+a_L} 11^{b_1+b_2+\dots+b_L} 13^{c_1+c_2+\dots+c_L} = 7^N 11^N 13^N = 1001^N ตามเงื่อนไขที่ 3

ดังนั้น โจทย์ข้อนี้คือการนับว่าเราสามารถสร้างลำดับ (ai)(a_i), (bi)(b_i), (ci)(c_i) ความยาว LL ขึ้นมาได้ทั้งหมดกี่แบบ โดยจะต้องตรงตามเงื่อนไข

  • 1ai,bi,ciK1 \leq a_i, b_i, c_i \leq K
  • a1+a2+a3++aL=Na_1 + a_2 + a_3 + \dots + a_L = N
  • b1+b2+b3++bL=Nb_1 + b_2 + b_3 + \dots + b_L = N
  • c1+c2+c3++cL=Nc_1 + c_2 + c_3 + \dots + c_L = N

สังเกตว่าทั้งสามลำดับมีเงื่อนไขเหมือนกันและเราสามารถสร้างสามลำดับนี้ได้โดยอิสระต่อกัน ดังนั้น เราจะพิจารณาคำนวณแค่จำนวนวิธีการสร้างลำดับ (ai)(a_i) เท่านั้น แล้วนำคำตอบไปยกกำลังสาม

นิยามให้ dpi,jdp_{i,j} หมายถึงวิธีสร้างลำดับความยาว ii ที่สมาชิกแต่ละตัวเป็นจำนวนเต็มระหว่าง 11 ถึง KK และรวมกันเท่ากับ NN พอดี

Base case ได้แก่

  • dp0,0=1dp_{0,0} = 1
  • dp0,j=0dp_{0,j} = 0 สำหรับ j0j \neq 0
  • dpi,j=0dp_{i,j} = 0 สำหรับ j0j \leq 0

เราสามารถเขียน recurrence formula สำหรับกรณี i>0i > 0 และ j>0j > 0 ได้ว่า

dpi,j=v=1v=Kdpi1,jvdp_{i,j} = \sum\limits_{v=1}^{v=K} dp_{i-1,j-v}

(หากกำหนดให้ ai=va_i = v เราจะสามารถสร้างลำดับ a1..(i1)a_{1..(i-1)} ได้ dpi1,jvdp_{i-1,j-v} วิธี เนื่องจากเราสามารถเลือก vv อะไรก็ได้ จำนวนวิธีทั้งหมดคือผลรวมจำนวนวิธีกรณี v=1,2,3,,Kv=1,2,3,\dots,K)

เพื่อความรวดเร็วในการคำนวณ เราสามารถกำหนด prefix sum qsi,j=dpi,1+dpi,2++dpi,jqs_{i,j} = dp_{i,1}+dp_{i,2}+\dots+dp_{i,j} ขึ้นมา ทำให้พจน์ v=1v=Kdpi1,jv\sum\limits_{v=1}^{v=K} dp_{i-1,j-v} สามารถคำนวณได้จาก qsi1,j1qsi1,max{0,jK1}qs_{i-1,j-1} - qs_{i-1,\max\{0,j-K-1\}}

ดังนั้น เราสามารถสร้างลำดับ (ai)(a_i), (bi)(b_i), (ci)(c_i) ความยาว LL ขึ้นมาได้ทั้งหมด (dpL,N)3\left(dp_{L,N}\right)^3 วิธี

เนื่องจากโจทย์อนุญาตให้เราสร้างลำดับความยาว LL เท่ากับเท่าใดก็ได้ (ซึ่งไม่เกิน NN) ดังนั้น คำตอบสุดท้ายคือ

L=1L=N(dpL,N)3\sum\limits_{L=1}^{L=N} \left(dp_{L,N}\right)^3

ทั้งนี้อย่าลืมคำนวณเลขทั้งหมดใน modulo 25532553 และระวังไม่ให้เกิดจำนวนติดลบขึ้น