atcoder#ABC285H. [ABC285Ex] Avoid Square Number

[ABC285Ex] Avoid Square Number

配点 : 600600

問題文

整数 N,KN,K と長さ KK の数列 EE が与えられます。 長さ NN の正整数列であって、以下の条件を全て満たすものの総数を 109+7\color{red}{10^9+7} で割った余りを求めてください。

  • どの要素も平方数でない
  • 全要素の積が i=1KpiEi\displaystyle \prod_{i=1}^{K} p_i^{E_i} である

但し、

  • pip_i は小さい方から ii 番目の素数を指すものとします。
  • ある 22 つの長さが等しい正整数列 A,BA,B について、 AAii 項目と BBii 項目が異なるような整数 ii が存在する時に限り、 AABB は異なる列であるとします。

制約

  • 入力は全て整数
  • 1N,K,Ei100001 \le N,K,E_i \le 10000

入力

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

NN KK

E1E_1 E2E_2 \dots EKE_K

出力

答えを整数として出力せよ。

3 2
3 2
15

全要素の積が 72=23×3272=2^3 \times 3^2 となる長さ 33 の数列は以下です。

  • (1,1,72)(1,1,72) とその並べ替え ( 33 通り ) ... 11 が平方数なので、条件を満たしません。
  • (1,2,36)(1,2,36) とその並べ替え ( 66 通り ) ... 1,361,36 が平方数なので、条件を満たしません。
  • (1,3,24)(1,3,24) とその並べ替え ( 66 通り ) ... 11 が平方数なので、条件を満たしません。
  • (1,4,18)(1,4,18) とその並べ替え ( 66 通り ) ... 1,41,4 が平方数なので、条件を満たしません。
  • (1,6,12)(1,6,12) とその並べ替え ( 66 通り ) ... 11 が平方数なので、条件を満たしません。
  • (1,8,9)(1,8,9) とその並べ替え ( 66 通り ) ... 1,91,9 が平方数なので、条件を満たしません。
  • (2,2,18)(2,2,18) とその並べ替え ( 33 通り ) ... 条件を満たします。
  • (2,3,12)(2,3,12) とその並べ替え ( 66 通り ) ... 条件を満たします。
  • (2,4,9)(2,4,9) とその並べ替え ( 66 通り ) ... 4,94,9 が平方数なので、条件を満たしません。
  • (2,6,6)(2,6,6) とその並べ替え ( 33 通り ) ... 条件を満たします。
  • (3,3,8)(3,3,8) とその並べ替え ( 33 通り ) ... 条件を満たします。
  • (3,4,6)(3,4,6) とその並べ替え ( 66 通り ) ... 44 が平方数なので、条件を満たしません。

よって、条件を満たす数列は 1515 個です。

285 10
3141 5926 5358 9793 2384 6264 3383 279 5028 8419
672860525

109+7\color{red}{10^9+7} で割った余りを求めることに注意してください。