I - Product of LCM of GCD Editorial by Nyaan


\(N=K\) のとき答えは明らかに \(\gcd(A_1,A_2,\dots,A_N)\) です。以下では \(N \neq K\) の場合を考えます。
答えは \(\prod_{p} p^{e_p} \bmod{10^9 + 7}\) のような形で表せます。公式解説では \(e_p \bmod{10^9+6}\) を計算していますが、 実は \(N \neq K\) のとき常に \(e_p\) は偶数になるので、 \(\text{mod }5\times 10^8 + 3\) 上で計算して答えを求めてもよく、(普通の問題のように) 十分大きい素数 mod 上での mod 数え上げに帰着します。

\(e_p\) は偶数になる証明は次の通りです。
素数 \(p\) を固定して考えます。\(S_i =\) (\(A_i\)\(p\) で割れる回数) である長さ \(N\) の数列 \(S\) および問題文の順列 \(P\) に対して次の問題の答えの総和が \(e_p\) となります。

長さ \(N\) の数列 \(T\)\(T_i = S_{P_i}\) を満たすようにとる。次の式を求めよ。

\[\max_{0\leq i \lt N/K} \min(T_{iK+1},T_{iK+2},\dots,T_{iK+K})\]

これは \(m = \max(B_i)\) として、次のものと等価です。

  • \(m \times N!\) - (答えが \(m\) 未満である \(P\) の個数) - (答えが \(m-1\) 未満である \(P\) の個数) - … - (答えが \(1\) 未満である \(P\) の個数)

ここで、「答えが \(x\) 未満である \(P\) の個数」は、次の条件を満たす通り数を \(N! / (K!)^{N/K}\) 倍したものと一致します。

\(1\), 袋 \(2\), \(\dots\), 袋 \(N/K\) および ボール \(1\), \(2\), \(\dots\), \(N\) がある。
また、\(S\)\(x\) 以上の要素の個数を \(y\) として、ボール \(1,2,\dots,y\) には \(1\) が、それ以外のボールには \(0\) が書かれている。
すべての袋にボールを \(K\) 個ずつ詰める方法であって、どの袋にも \(0\) の書かれたボールが \(1\) 個以上含まれる方法は何通りか?

よって \(e_p\) はある整数 \(C\) を用いて

\[m \times N! - C \times N! / (K!)^{N/K}\]

という形で表せます。\(N!,N! / (K!)^{N/K}\) はともに \(N\neq K\) の制約下では偶数なので(後者は Lucas の定理を利用して示せます)、\(e_p\) も偶数であることが確認できました。
なお、一番下の問題は FPS の pow を用いれば \(0 \leq y \leq N\) について \(\mathrm{O}(N \log N)\) で計算できるので、ここから \(\text{mod }5\times 10^8+3\) 上の高速な解法をそのまま導出できます。(上手く変形すると pow は要らないかもしれませんが、そこまでは考察していません。)

posted:
last update: