Official

C - Whole Product of Pairwise Distances Editorial by vwxyz Editorial for printing


\(A\) はソートされているとしてよいです。
\(A_i\) を \(N\) で割った余りを \(B_i\) と表します。
このとき、求める値は \(\prod_{1 \leq i < j \leq N}(B_j-B_i)\) です。
\(B_1,B_2,\dots,B_N\) の中に同じ値があれば答えは \(0\) です。
\(B_1,B_2,\dots,B_N\) が互いに相異なる場合を考えます。
このとき、\((B_1,B_2,\dots,B_N)\) は \((1,2,\dots,N)\) の並べ替えです。
\((B_1,B_2,\dots,B_N)\) の転倒数を \(I\) と置くと、
\(\prod_{1 \leq i < j \leq N}(B_j-B_i)=(-1)^I \times \prod_{1 \leq i < j \leq N}(j-i)\) となります。
\(\prod_{1 \leq i < j \leq N}(j-i)\) は \(d=1,2,\dots,N-1\) について \(d^{(N-d)}\) をかけ合わせたものなので求めることができます。

posted:
last update: