C++ アルゴリズムとデータ構造のライブラリ
#include "library/number/mod/mod_factorial.hpp"$O(N)$
long long fac = mod_factorial(x, MOD);
#pragma once
vector<long long> _mf_memo;
long long mod_factorial(int x, long long m) {
if ((int)_mf_memo.size() > x) return _mf_memo[x];
if (_mf_memo.empty()) _mf_memo.push_back(1);
for (int i = _mf_memo.size(); i <= x; ++i)
_mf_memo.push_back(_mf_memo.back() * i % m);
return _mf_memo[x];
}#line 2 "library/number/mod/mod_factorial.hpp"
vector<long long> _mf_memo;
long long mod_factorial(int x, long long m) {
if ((int)_mf_memo.size() > x) return _mf_memo[x];
if (_mf_memo.empty()) _mf_memo.push_back(1);
for (int i = _mf_memo.size(); i <= x; ++i)
_mf_memo.push_back(_mf_memo.back() * i % m);
return _mf_memo[x];
}