This documentation is automatically generated by online-judge-tools/verification-helper
View the Project on GitHub suisen-cp/cp-library-cpp
#define PROBLEM "https://judge.yosupo.jp/problem/montmort_number_mod" #include <iostream> #include <atcoder/modint> using mint = atcoder::modint; #include "library/sequence/montmort_number.hpp" using suisen::montmort_number; int main() { int n, m; std::cin >> n >> m; mint::set_mod(m); std::vector<mint> res = montmort_number<mint>(n); for (int i = 1; i <= n; ++i) { std::cout << res[i].val() << " \n"[i == n]; } return 0; }
#line 1 "test/src/sequence/montmort_number/montmort_number_mod.test.cpp" #define PROBLEM "https://judge.yosupo.jp/problem/montmort_number_mod" #include <iostream> #include <atcoder/modint> using mint = atcoder::modint; #line 1 "library/sequence/montmort_number.hpp" #include <vector> namespace suisen { template <typename mint> std::vector<mint> montmort_number(int n) { std::vector<mint> res{ 1, 0 }; for (int i = 2; i <= n; ++i) res.push_back((i - 1) * (res[i - 1] + res[i - 2])); res.resize(n + 1); return res; } } // namespace suisen #line 8 "test/src/sequence/montmort_number/montmort_number_mod.test.cpp" using suisen::montmort_number; int main() { int n, m; std::cin >> n >> m; mint::set_mod(m); std::vector<mint> res = montmort_number<mint>(n); for (int i = 1; i <= n; ++i) { std::cout << res[i].val() << " \n"[i == n]; } return 0; }