https://yukicoder.me/problems/no/727
解説
https://yukicoder.me/submissions/280706
組合せ数学をする。
(全体の組合せ)=(買われた関係の組合せ)×(売り手の置き方の組合せ)×(買い手の置き方の組合せ)
(買われた関係の組合せ)は先頭から何番目の人と関係をもたせるかを考えていく。
すると、相手が決まっていない最初の人は2N-1通り選択肢がある。
相手が決まっていない2番目の人は2N-3通り選択肢がある。
これを続けると(2N-1)*(2N-3)*(2N-5)*...*3*1となる。
置き方の組み合わせ数はどちらもN!なので、すべてかけると答えになる。
int N; Comb<mint, 2010101> com; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; mint ans = com.fac[N] * com.fac[N]; int i = 2 * N - 1; while (0 < i) { ans *= i; i -= 2; } cout << ans << endl; }