src/comb/seq/fact/lib.hpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include "../../../math/mul_mod/lib.hpp" | ||
| 4 | #include "../../../util/alias/others/lib.hpp" | ||
| 5 | |||
| 6 | namespace tifa_libs { | ||
| 7 | |||
| 8 | // i! from i=0..n-1 | ||
| 9 | 2523 | CEXP vecuu gen_fact(u32 n, u64 mod) NE { | |
| 10 |
2/2✓ Branch 0 taken 85 times.
✓ Branch 1 taken 2438 times.
|
2608 | retif_((n <= 1) [[unlikely]], vecuu(n, 1)); |
| 11 | 2438 | vecuu ans(n); | |
| 12 | 2438 | ans[0] = ans[1] = 1; | |
| 13 |
2/2✓ Branch 3 taken 450510593 times.
✓ Branch 4 taken 2438 times.
|
450513031 | flt_ (u32, i, 2, n) ans[i] = mul_mod_u(ans[i - 1], i, mod); |
| 14 | 2438 | return ans; | |
| 15 | 2438 | } | |
| 16 | // i! from i=0..n-1 | ||
| 17 | template <class mint> | ||
| 18 | 434 | CEXP vec<mint> gen_fact(u32 n) NE { | |
| 19 | 434 | vec<mint> ans(n); | |
| 20 | 434 | auto _ = gen_fact(n, mint::mod()); | |
| 21 |
28/28std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > >(unsigned int):
✓ Branch 3 taken 1511122 times.
✓ Branch 4 taken 11 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> > >(unsigned int):
✓ Branch 3 taken 4533366 times.
✓ Branch 4 taken 33 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<17l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<17l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<17l> > >(unsigned int):
✓ Branch 3 taken 2400038 times.
✓ Branch 4 taken 16 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >(unsigned int):
✓ Branch 3 taken 11466770 times.
✓ Branch 4 taken 82 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<14l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<14l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<14l> > >(unsigned int):
✓ Branch 3 taken 1511122 times.
✓ Branch 4 taken 11 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> > >(unsigned int):
✓ Branch 3 taken 4533366 times.
✓ Branch 4 taken 33 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<17l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<17l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<17l> > >(unsigned int):
✓ Branch 3 taken 2400038 times.
✓ Branch 4 taken 16 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<70l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<70l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<70l> > >(unsigned int):
✓ Branch 3 taken 1001000 times.
✓ Branch 4 taken 2 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > >(unsigned int):
✓ Branch 3 taken 1511122 times.
✓ Branch 4 taken 11 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> > >(unsigned int):
✓ Branch 3 taken 4533366 times.
✓ Branch 4 taken 33 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<17l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<17l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<17l> > >(unsigned int):
✓ Branch 3 taken 2400038 times.
✓ Branch 4 taken 16 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<69l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<69l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<69l> > >(unsigned int):
✓ Branch 3 taken 1001000 times.
✓ Branch 4 taken 2 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >(unsigned int):
✓ Branch 3 taken 12467770 times.
✓ Branch 4 taken 84 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >(unsigned int):
✓ Branch 3 taken 12467770 times.
✓ Branch 4 taken 84 times.
|
63738322 | flt_ (u32, i, 0, n) ans[i] = _[i]; |
| 22 | 434 | return ans; | |
| 23 | 434 | } | |
| 24 | |||
| 25 | } // namespace tifa_libs | ||
| 26 |