GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 71.4% 5 / 0 / 7
Functions: 100.0% 1 / 0 / 1
Branches: 75.0% 3 / 0 / 4

src/comb/seq/derange/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 // (derangement) !i for i=0..n-1
9 10 CEXP vecuu gen_derange(u32 n, u64 mod) NE {
10 20 vecuu d{0, mod > 1};
11
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
10 if (n > 2) d.reserve(n);
12 else {
13 d.resize(n);
14 return d;
15 }
16
2/2
✓ Branch 4 taken 5661042 times.
✓ Branch 5 taken 10 times.
5661052 flt_ (u32, i, 2, n) d.push_back(mul_mod_u(i, d[i - 1] + d[i - 2], mod));
17 10 return d;
18 }
19 template <class mint>
20 CEXP vec<mint> gen_derange(u32 n) NE {
21 vec<mint> d(n);
22 auto _ = gen_derange(n, mint::mod());
23 flt_ (u32, i, 0, n) d[i] = _[i];
24 return d;
25 }
26
27 } // namespace tifa_libs
28