atcoder#AGC052C. [AGC052C] Nondivisible Prefix Sums

[AGC052C] Nondivisible Prefix Sums

配点 : 10001000

問題文

素数 PP が与えられます。これはあなたの嫌いな数です。

整数の列 A1,A2,,ANA_1, A_2, \dots, A_N について、どの接頭辞の和も PP で割り切れないように要素を並べ替えることができるとき、この列を 良い 列と呼びます(すなわち、並べ替えのあと、1iN1 \le i \le N かつ A1+A2++Ai0modPA_1 + A_2 + \dots + A_i \equiv 0 \bmod P であるような ii存在してはいけません)。

各要素が 11 以上 P1P-1 以下であるような長さ NN の整数列は全部で (P1)N(P-1)^N 通りありますが、このうち 良い 列はいくつでしょうか。

答えは非常に大きい可能性があるため、これを 998244353998244353 で割った余りを出力してください。

制約

  • 1N50001 \le N \le 5000
  • 2P1082 \le P \le 10^8
  • PP は素数である。

入力

入力は以下の形式で標準入力から与えられる。

NN PP

出力

良い 列の個数を 998244353998244353 で割った余りを出力せよ。

2 5
12

良い列は [1,1][1, 1], [1,2][1, 2], [1,3][1, 3], [2,1][2, 1], [2,2][2, 2], [2,4][2, 4], [3,1][3, 1], [3,3][3, 3], [3,4][3, 4], [4,2][4, 2], [4,3][4, 3], [4,4][4, 4]1212 通りです。

4 3
8

良い列は [1,1,1,2][1, 1, 1, 2], [1,1,2,1][1, 1, 2, 1], [1,2,1,1][1, 2, 1, 1], [2,1,1,1][2, 1, 1, 1], [2,2,2,1[2, 2, 2, 1], [2,2,1,2][2, 2, 1, 2], [2,1,2,2][2, 1, 2, 2], [1,2,2,2][1, 2, 2, 2]88 通りです。

5000 99999989
51699346
2021 307
644635349