Large nCr Small Modulus(Easy)

2 secs 1024 MB
143-378's icon 143-378

解説

本問では制約上、MMの素因数の指数が11と保証されています。
そのため各素因数ごとにLucasの定理で(NR)\binom{N}{R} modmod PiP_iを計算し、中国剰余定理で解を復元すればよいです。
計算量は前計算O(M)O(M)・二項係数の計算にO(logNlogM+logM)O(logNlogM + logM)です。
内訳は以下の通りです。

  • 階乗の前計算にO(ΣPi)O(ΠPi)=O(M)O(ΣP_i) \leq O(ΠP_i) = O(M)時間・空間
  • 素因数ごとの二項係数の計算にO(ΣlogPiN)O(logNlogM)O(Σlog_{P_i} N) \leq O(logNlogM)時間・空間
  • 中国剰余定理にO(ΣlogPi)=O(logM)O(Σlog P_i) = O(logM)時間

なお本問の制約範囲外ですが、抽象化の際にはN,R=0N,R = 0N<RN < RM=1M = 1のケースに注意してください。

解答例(Python)

解答例では、二項係数が与えられるたびに階乗を計算しています。

解答例