Factorial
階乗 \(n!\) とその逆元 \(\frac{1}{n!}\) をmodで計算する.
関数
std::tuple<std::vector<long long>, std::vector<long long> > calc_factorial(const int n, const long long MOD);
整数 n と素数 MOD に対して, タプル (fact, ifact) を返す.
fact,ifact は長さ n の std::vector<long long> であり,各要素の値は以下のようになる.
\[
\begin{eqnarray*}
&\mathrm{fact[i]} = i! \mod \mathrm{MOD} \\
&\mathrm{ifact[i]} = \frac{1}{i!} \mod \mathrm{MOD}
\end{eqnarray*}
\]