diff --git a/ICPCnotebook.cls b/ICPCnotebook.cls index b7d51bc09..9d3e1d84a 100644 --- a/ICPCnotebook.cls +++ b/ICPCnotebook.cls @@ -51,7 +51,6 @@ % User defined command \newcommand{\lcm}{\operatorname{lcm}} -\newcommand{\subjectto}{~s.t.~} \DeclareMathOperator*{\argmin}{arg\,min} \DeclareMathOperator*{\argmax}{arg\,max} diff --git a/config.yml b/config.yml index cfefd8f99..4f736f6c8 100644 --- a/config.yml +++ b/config.yml @@ -255,10 +255,10 @@ notebook: - max_area_t: 凸包内面积最大的三角形 code_ext: hpp test_ext: cpp - - coverage_rect_with_min_area: 最小面积覆盖矩形 + - coverage_rect_min_area: 最小面积覆盖矩形 code_ext: hpp test_ext: cpp - - coverage_rect_with_min_circum: 最小周长覆盖矩形 + - coverage_rect_min_circum: 最小周长覆盖矩形 code_ext: hpp test_ext: cpp - max_dis_cvh: 两凸包中的点的最远距离 @@ -282,16 +282,16 @@ notebook: - extan_cc: 两圆的外切线 code_ext: hpp test_ext: cpp - - inv_c2c: 未经过反演中心的圆的几何反演 + - inv_p2p: 点的反演 code_ext: hpp test_ext: cpp - - inv_c2l: 经过反演中心的圆的几何反演 + - inv_l2c: 直线的反演 code_ext: hpp test_ext: cpp - - inv_l2c: 直线的几何反演 + - inv_c2c: 圆的反演(未经过反演中心) code_ext: hpp test_ext: cpp - - inv_p2p: 点的几何反演 + - inv_c2l: 圆的反演(经过反演中心) code_ext: hpp test_ext: cpp - dist_pl: 点与直线距离 @@ -306,7 +306,13 @@ notebook: - ins_ll: 直线交点 code_ext: hpp test_ext: cpp - - is_ins_ss: 判断线段是否相交 + - is_ins_sl: 判断线段与直线是否相交 + code_ext: hpp + test_ext: cpp + - is_ins_ss: 判断两线段是否相交 + code_ext: hpp + test_ext: cpp + - any_ins_ss: 判断多条线段是否相交 code_ext: hpp test_ext: cpp - is_on_s: 判断点是否在直线上 @@ -318,19 +324,22 @@ notebook: - proj: 点在直线上的投影与对称点 code_ext: hpp test_ext: cpp - - make_c_ppp: 根据三点构造圆 + - make_c_ppp: 构造圆(经过的三点) code_ext: hpp test_ext: cpp - - make_c_rcc_ex: 根据半径和两外切圆构造圆 + - make_c_rpp: 构造圆(半径和经过的两点) code_ext: hpp test_ext: cpp - - make_c_rll: 根据半径和两切线构造圆 + - make_c_rpl: 构造圆(半径,切线和经过的一点) code_ext: hpp test_ext: cpp - - make_c_rpl: 根据半径,切线和经过的一点构造圆 + - make_c_rll: 构造圆(半径和两切线) code_ext: hpp test_ext: cpp - - make_c_rpp: 根据半径和经过的两点构造圆 + - make_c_rcc_ex: 构造圆(半径和两外切圆) + code_ext: hpp + test_ext: cpp + - make_c_pcc_ex: 构造圆(经过的一点和两外切圆) code_ext: hpp test_ext: cpp - min_cover_c: 最小覆盖圆 @@ -414,6 +423,12 @@ notebook: - tcenter_x: 三角形 Fermat 点 code_ext: hpp test_ext: cpp + - aunion_cs: 圆的面积并 + code_ext: hpp + test_ext: cpp + - aunion_pos: 多边形的面积并 + code_ext: hpp + test_ext: cpp geo3d: - point3d: 三维点 code_ext: hpp @@ -841,28 +856,19 @@ notebook: - mint_2e61n1: 模整数类(固定,61-1) code_ext: hpp test_ext: cpp - - mint_ss: 模整数类(静态,简单实现) - code_ext: hpp - test_ext: cpp - mint_s30: 模整数类(静态,30) code_ext: hpp test_ext: cpp - mint_s63: 模整数类(静态,63) code_ext: hpp test_ext: cpp - - mint_ds: 模整数类(动态,简单实现) - code_ext: hpp - test_ext: cpp - mint_d31: 模整数类(动态,31) code_ext: hpp test_ext: cpp - mint_d63: 模整数类(动态,63) code_ext: hpp test_ext: cpp - - mul_mod_s: 有符号模乘法 - code_ext: hpp - test_ext: cpp - - mul_mod_u: 无符号模乘法 + - mul_mod: 模乘法 code_ext: hpp test_ext: cpp - qpow_mod: 模快速幂 diff --git a/src/cheatsheet/nt-const.tex b/src/cheatsheet/nt-const.tex index 0aabd1d7c..e82ef60ac 100644 --- a/src/cheatsheet/nt-const.tex +++ b/src/cheatsheet/nt-const.tex @@ -31,16 +31,16 @@ \subsection{本质不同质因子数, 因子数, 素数个数} \begin{tabular}{llll|llll} \hline - \(n\) & \(\max\{\omega(n)\}\) & \(\max\{d(n)\}\) & \(\pi(n)\) & \(n\) & \(\max\{\omega(n)\}\) & \(\max\{d(n)\}\) & \(\pi(n)\) \\ + \(n\) & \(\max\{\omega(n)\}\) & \(\max\{d(n)\}\) & \(\pi(n)\) & \(n\) & \(\max\{\omega(n)\}\) & \(\max\{d(n)\}\) & \(\pi(n)\) \\ \hline - \(10^1\) & \(2\) & \(4\) & \(4\) & \(10^{10}\) & \(10\) & \(2304\) & \(455052511\) \\ - \(10^2\) & \(3\) & \(12\) & \(25\) & \(10^{11}\) & \(10\) & \(4032\) & \(4118054813\) \\ - \(10^3\) & \(4\) & \(32\) & \(168\) & \(10^{12}\) & \(11\) & \(6720\) & \\ - \(10^4\) & \(5\) & \(64\) & \(1229\) & \(10^{13}\) & \(12\) & \(10752\) & \\ - \(10^5\) & \(6\) & \(128\) & \(9592\) & \(10^{14}\) & \(12\) & \(17280\) & \\ - \(10^6\) & \(7\) & \(240\) & \(78498\) & \(10^{15}\) & \(13\) & \(26880\) & \\ - \(10^7\) & \(8\) & \(448\) & \(664579\) & \(10^{16}\) & \(13\) & \(41472\) & \\ - \(10^8\) & \(8\) & \(768\) & \(5761455\) & \(10^{17}\) & \(14\) & \(64512\) & \\ - \(10^9\) & \(9\) & \(1344\) & \(50847534\) & \(10^{18}\) & \(15\) & \(103680\) & \\ + \(10^1\) & \(2\) & \(4\) & \(4\) & \(10^{10}\) & \(10\) & \(2~304\) & \(455~052~511\) \\ + \(10^2\) & \(3\) & \(12\) & \(25\) & \(10^{11}\) & \(10\) & \(4~032\) & \(4~118~054~813\) \\ + \(10^3\) & \(4\) & \(32\) & \(168\) & \(10^{12}\) & \(11\) & \(6~720\) & \\ + \(10^4\) & \(5\) & \(64\) & \(1~229\) & \(10^{13}\) & \(12\) & \(10~752\) & \\ + \(10^5\) & \(6\) & \(128\) & \(9~592\) & \(10^{14}\) & \(12\) & \(17~280\) & \\ + \(10^6\) & \(7\) & \(240\) & \(78~498\) & \(10^{15}\) & \(13\) & \(26~880\) & \\ + \(10^7\) & \(8\) & \(448\) & \(664~579\) & \(10^{16}\) & \(13\) & \(41~472\) & \\ + \(10^8\) & \(8\) & \(768\) & \(5~761~455\) & \(10^{17}\) & \(14\) & \(64~512\) & \\ + \(10^9\) & \(9\) & \(1~344\) & \(50~847~534\) & \(10^{18}\) & \(15\) & \(103~680\) & \\ \hline \end{tabular} diff --git a/src/code/comb/binom.hpp b/src/code/comb/binom.hpp index 1d650bfdf..911ffd115 100644 --- a/src/code/comb/binom.hpp +++ b/src/code/comb/binom.hpp @@ -15,24 +15,24 @@ struct Binom { static CEXP u64 mod() { return mint::mod(); } - // \binom{m}{n} + // $\binom{m}{n}$ template CEXP mint mCn(T m, T n) const { return m < n ? 0 : mPn(m, n) * ifact[(usz)n]; } - // \binom{m}{n} + // $\binom{m}{n}$ template CEXP mint mCn(T m, T n) const { return m < n || n < 0 ? 0 : mCn(to_uint_t(m), to_uint_t(n)); } - // \binom{m}{n} * n! + // $\binom{m}{n} \cdot n!$ template CEXP mint mPn(T m, T n) const { return m < n ? 0 : fact[(usz)m] * ifact[(usz)(m - n)]; } - // \binom{m}{n} * n! + // $\binom{m}{n} \cdot n!$ template CEXP mint mPn(T m, T n) const { return m < n || n < 0 ? 0 : mPn(to_uint_t(m), to_uint_t(n)); } - // [x^n] 1 / (1-x)^m + // $[x^n] \frac{1}{(1-x)^m}$ template CEXP mint mHn(T m, T n) const { return n <= 0 ? n == 0 : mCn(m + n - 1, n); } - // [x^n] 1 / (1-x)^m + // $[x^n] \frac{1}{(1-x)^m}$ template CEXP mint mHn(T m, T n) const { return m < 0 || n <= 0 ? n == 0 : mHn(to_uint_t(m), to_uint_t(n)); } }; diff --git a/src/code/comb/gen_derange.hpp b/src/code/comb/gen_derange.hpp index 1f65831f3..eb1a63605 100644 --- a/src/code/comb/gen_derange.hpp +++ b/src/code/comb/gen_derange.hpp @@ -1,7 +1,7 @@ #ifndef TIFALIBS_COMB_GEN_DERANGE #define TIFALIBS_COMB_GEN_DERANGE -#include "../math/mul_mod_u.hpp" +#include "../math/mul_mod.hpp" namespace tifa_libs::math { diff --git a/src/code/comb/gen_fact.hpp b/src/code/comb/gen_fact.hpp index dbd03add7..1fb31a1d9 100644 --- a/src/code/comb/gen_fact.hpp +++ b/src/code/comb/gen_fact.hpp @@ -1,7 +1,7 @@ #ifndef TIFALIBS_COMB_GEN_FACT #define TIFALIBS_COMB_GEN_FACT -#include "../math/mul_mod_u.hpp" +#include "../math/mul_mod.hpp" namespace tifa_libs::math { diff --git a/src/code/comb/gen_ifact.hpp b/src/code/comb/gen_ifact.hpp index 6c6fc3397..98d4a9e52 100644 --- a/src/code/comb/gen_ifact.hpp +++ b/src/code/comb/gen_ifact.hpp @@ -1,7 +1,7 @@ #ifndef TIFALIBS_COMB_GEN_IFACT #define TIFALIBS_COMB_GEN_IFACT -#include "../math/mul_mod_u.hpp" +#include "../math/mul_mod.hpp" #include "gen_inv.hpp" namespace tifa_libs::math { diff --git a/src/code/comb/gen_inv.hpp b/src/code/comb/gen_inv.hpp index 5bde4074a..802f45c15 100644 --- a/src/code/comb/gen_inv.hpp +++ b/src/code/comb/gen_inv.hpp @@ -1,7 +1,7 @@ #ifndef TIFALIBS_COMB_GEN_INV #define TIFALIBS_COMB_GEN_INV -#include "../math/mul_mod_u.hpp" +#include "../math/mul_mod.hpp" namespace tifa_libs::math { diff --git a/src/code/comb/gen_invseq.hpp b/src/code/comb/gen_invseq.hpp index af46383e3..819765e66 100644 --- a/src/code/comb/gen_invseq.hpp +++ b/src/code/comb/gen_invseq.hpp @@ -1,7 +1,7 @@ #ifndef TIFALIBS_COMB_GEN_INVSEQ #define TIFALIBS_COMB_GEN_INVSEQ -#include "../math/mul_mod_u.hpp" +#include "../math/mul_mod.hpp" #include "../nt/inverse.hpp" namespace tifa_libs::math { diff --git a/src/code/conv/conv_3ntt.hpp b/src/code/conv/conv_3ntt.hpp index bd2bcfded..6e2966999 100644 --- a/src/code/conv/conv_3ntt.hpp +++ b/src/code/conv/conv_3ntt.hpp @@ -1,7 +1,7 @@ #ifndef TIFALIBS_CONV_CONV_3NTT #define TIFALIBS_CONV_CONV_3NTT -#include "../math/mul_mod_u.hpp" +#include "../math/mul_mod.hpp" #include "conv_dft.hpp" #include "ntt.hpp" @@ -10,8 +10,8 @@ namespace tifa_libs::math { // 167772161, 469762049, 754974721 template CEXP vecu64 conv_3ntt_u64(std::tuple, NTT, NTT> &ntt3, vecu64 CR l, vecu64 CR r, u64 mod, u32 ans_size = 0) { - CEXP u32 m0 = mint0::mod(), m1 = mint1::mod(), m2 = mint2::mod(); - const u32 r01 = mint1(m0).inv().val(), r02 = mint2(m0).inv().val(), r12 = mint2(m1).inv().val(), r02r12 = (u32)mul_mod_u(r02, r12, m2); + CEXP u64 m0 = mint0::mod(), m1 = mint1::mod(), m2 = mint2::mod(); + const u64 r01 = mint1(m0).inv().val(), r02 = mint2(m0).inv().val(), r12 = mint2(m1).inv().val(), r02r12 = (u32)mul_mod_u(r02, r12, m2); const u64 w1 = m0 % mod, w2 = mul_mod_u(m0, m1, mod); if (!ans_size) ans_size = u32(l.size() + r.size() - 1); diff --git a/src/code/ds/skew_heap.hpp b/src/code/ds/skew_heap.hpp index ff691927d..db2408ecf 100644 --- a/src/code/ds/skew_heap.hpp +++ b/src/code/ds/skew_heap.hpp @@ -6,7 +6,7 @@ namespace tifa_libs::ds { template > -class SkewHeap { +class skew_heap { static CEXP C comp_{}; struct TIFA { T k, lz; diff --git a/src/code/fast/str2uint_mod.hpp b/src/code/fast/str2uint_mod.hpp index 3447072a8..6c54fc781 100644 --- a/src/code/fast/str2uint_mod.hpp +++ b/src/code/fast/str2uint_mod.hpp @@ -1,7 +1,7 @@ #ifndef TIFALIBS_FAST_STR2UINT_MOD #define TIFALIBS_FAST_STR2UINT_MOD -#include "../math/mul_mod_u.hpp" +#include "../math/mul_mod.hpp" #include "str2uint_si64.hpp" namespace tifa_libs { diff --git a/src/code/geo2d/ang2pi_pp.hpp b/src/code/geo2d/ang2pi_pp.hpp index ffa1acb96..9cabb5c4a 100644 --- a/src/code/geo2d/ang2pi_pp.hpp +++ b/src/code/geo2d/ang2pi_pp.hpp @@ -9,7 +9,7 @@ namespace tifa_libs::geo { template CEXP FP ang2pi_PP(point CR p1, point CR p2) { FP res = ang_PP(p1, p2); - return is_neg(res) ? res + 2 * std::numbers::pi_v : res; + return is_neg(res) ? res + 2 * pi_v : res; } } // namespace tifa_libs::geo diff --git a/src/code/geo2d/any_ins_ss.hpp b/src/code/geo2d/any_ins_ss.hpp new file mode 100644 index 000000000..a705b5003 --- /dev/null +++ b/src/code/geo2d/any_ins_ss.hpp @@ -0,0 +1,49 @@ +#ifndef TIFALIBS_GEO2D_ANY_INS_SS +#define TIFALIBS_GEO2D_ANY_INS_SS + +#include "ins_ll.hpp" +#include "is_ins_sl.hpp" + +namespace tifa_libs::geo { + +// judge if any two segments are intersected +template +CEXP bool any_ins_Ss(vec> CR ss) { + if (ss.empty()) return false; + using seq_t = std::tuple>; + const auto seqcmp = [](seq_t CR u, seq_t CR v) { + auto [u0, u1, u2] = u; + auto [v0, v1, v2] = v; + if (is_eq(u0, v0)) return u1 == v1 ? u2 < v2 : u1 < v1; + return is_lt(u0, v0); + }; + vec seq; + for (auto seg : ss) { + if (is_gt(seg.l.x, seg.r.x)) swap(seg.l, seg.r); + seq.emplace_back(seg.l.x, 0, seg), seq.emplace_back(seg.r.x, 1, seg); + } + std::ranges::sort(seq, seqcmp); + FP x_now; + auto cmp = [&](line CR u, line CR v) { + if (is_eq(u.l.x, u.r.x) || is_eq(v.l.x, v.r.x)) return is_lt(u.l.y, v.l.y); + return is_lt(((x_now - u.l.x) * (u.r.y - u.l.y) + u.l.y * (u.r.x - u.l.x)) * (v.r.x - v.l.x), ((x_now - v.l.x) * (v.r.y - v.l.y) + v.l.y * (v.r.x - v.l.x)) * (u.r.x - u.l.x)); + }; + std::multiset, decltype(cmp)> s{cmp}; + for (auto CR[x, o, seg] : seq) { + x_now = x; + auto it = s.lower_bound(seg); + if (!o) { + if (it != s.end() && is_ins_SL(seg, *it)) return 1; + if (it != s.begin() && is_ins_SL(seg, *prev(it))) return 1; + s.insert(seg); + } else { + if (next(it) != s.end() && it != s.begin() && is_ins_LL(*prev(it), *next(it))) return 1; + s.erase(it); + } + } + return 0; +} + +} // namespace tifa_libs::geo + +#endif \ No newline at end of file diff --git a/src/code/geo2d/area_cc.hpp b/src/code/geo2d/area_cc.hpp index f06cf4639..6d93993ee 100644 --- a/src/code/geo2d/area_cc.hpp +++ b/src/code/geo2d/area_cc.hpp @@ -9,8 +9,8 @@ namespace tifa_libs::geo { template CEXP FP area_CC(circle CR c1, circle CR c2) { auto relation = relation_CC(c1, c2); - if (relation == RELCC::lyingout_cc || relation == RELCC::touchex_cc) return FP{}; - if (relation == RELCC::lyingin_cc || relation == RELCC::touchin_cc) return min(c1.area(), c2.area()); + if (relation == lyingout_cc || relation == touchex_cc) return FP{}; + if (relation == lyingin_cc || relation == touchin_cc) return min(c1.area(), c2.area()); FP d = dist_PP(c1.o, c2.o); return c1.crown_area(std::acos((c1.r * c1.r - c2.r * c2.r + d * d) / (2 * c1.r * d)) * 2) + c2.crown_area(std::acos((c2.r * c2.r - c1.r * c1.r + d * d) / (2 * c2.r * d)) * 2); } diff --git a/src/code/geo2d/area_poc.hpp b/src/code/geo2d/area_poc.hpp index f6c731655..3c80bbdc5 100644 --- a/src/code/geo2d/area_poc.hpp +++ b/src/code/geo2d/area_poc.hpp @@ -11,7 +11,7 @@ namespace tifa_libs::geo { template CEXP FP area_PoC(polygon CR po, circle CR c) { math::kahan ans{}; - u32 sz = (u32)po.vs.size(); + u32 sz = po.size(); if (sz < 3) return ans; flt_ (u32, i, 0, sz) ans += sarea_CT(c, po[i], po[po.next(i)]); return abs(ans); diff --git a/src/code/geo2d/aunion_cs.hpp b/src/code/geo2d/aunion_cs.hpp new file mode 100644 index 000000000..6fe2c8580 --- /dev/null +++ b/src/code/geo2d/aunion_cs.hpp @@ -0,0 +1,70 @@ +#ifndef TIFALIBS_GEO2D_AUNION_CS +#define TIFALIBS_GEO2D_AUNION_CS + +#include "ins_cc.hpp" +#include "rel_cc.hpp" + +namespace tifa_libs::geo { + +// @return ans, which ans[i] means area covered at least i+1 times +template +CEXP vec aunion_Cs(vec> CR cs) { + using arc_t = std::tuple, FP, FP, FP>; + u32 n = (u32)cs.size(); + vvec arcs(n); + auto cut = [&](circle CR ci, u32 i) { + vecp evt; + evt.emplace_back(-pi_v, 0), evt.emplace_back(pi_v, 0); + int init = 0; + flt_ (u32, j, 0, n) { + if (i == j) continue; + circle CR cj = cs[j]; + if (auto _ = relation_CC(ci, cj); is_lt(ci.r, cj.r) && (_ == lyingin_cc || _ == touchin_cc)) ++init; + auto inters = ins_CC(ci, cj); + if (!inters.has_value()) continue; + if (inters.value().first == inters.value().second) evt.emplace_back((inters.value().first - ci.o).arg(), 0); + else { + point dl = inters.value().first - ci.o, dr = inters.value().second - ci.o; + FP argl = dl.arg(), argr = dr.arg(); + if (is_eq(argl, -pi_v)) argl = pi_v; + if (is_eq(argr, -pi_v)) argr = pi_v; + if (is_gt(argl, argr)) { + evt.emplace_back(argl, 1), evt.emplace_back(pi_v, -1); + evt.emplace_back(-pi_v, 1), evt.emplace_back(argr, -1); + } else evt.emplace_back(argl, 1), evt.emplace_back(argr, -1); + } + } + std::ranges::sort(evt); + int sum = init; + flt_ (u32, i, 0, (u32)evt.size()) { + sum += evt[i].second; + if (!is_eq(evt[i].first, evt[i + 1].first)) arcs[(u32)sum].emplace_back(ci.o, ci.r, evt[i].first, evt[i + 1].first); + if (is_eq(evt[i + 1].first, pi_v)) break; + } + }; + auto oint = [](arc_t CR arc) { + if (auto [cc, cr, l, r] = arc; is_eq(r - l, pi_v * 2)) return 2 * pi_v * cr * cr; + else return cr * (cr * (r - l) + cc.x * (std::sin(r) - std::sin(l)) - cc.y * (std::cos(r) - std::cos(l))); + }; + flt_ (u32, i, 0, n) cut(cs[i], i); + auto eq = [](arc_t CR u, arc_t CR v) { + auto [u1, u2, u3, u4] = u; + auto [v1, v2, v3, v4] = v; + return u1 == v1 && is_eq(u2, v2) && is_eq(u3, v3) && is_eq(u4, v4); + }; + vec ans(n); + flt_ (u32, i, 0, n) { + FP sum = 0; + std::ranges::sort(arcs[i]); + u32 cnt = 0; + flt_ (u32, j, 0, (u32)arcs[i].size()) + if (j > 0 && eq(arcs[i][j], arcs[i][j - 1])) arcs[i + (++cnt)].push_back(arcs[i][j]); + else cnt = 0, sum += oint(arcs[i][j]); + ans[i] = sum / 2; + } + return ans; +} + +} // namespace tifa_libs::geo + +#endif \ No newline at end of file diff --git a/src/code/geo2d/aunion_pos.hpp b/src/code/geo2d/aunion_pos.hpp new file mode 100644 index 000000000..7fc1785ca --- /dev/null +++ b/src/code/geo2d/aunion_pos.hpp @@ -0,0 +1,62 @@ +#ifndef TIFALIBS_GEO2D_AUNION_POS +#define TIFALIBS_GEO2D_AUNION_POS + +#include "ins_ll.hpp" +#include "is_ins_sl.hpp" +#include "polygon.hpp" + +namespace tifa_libs::geo { + +// @return ans, which ans[i] means area covered at least i+1 times +template +CEXP vec aunion_Pos(vec> CR pos) { + u32 n = (u32)pos.size(); + vvecpt> segs(n); + auto chk = [](point CR u, line CR e) { return !((u < e.l && u < e.r) || (u > e.l && u > e.r)); }; + auto cut = [&](line CR e, u32 i) { + const line le{e.l, e.r}; + vecp, int> evt; + evt.emplace_back(e.l, 0), evt.emplace_back(e.r, 0); + flt_ (u32, j, 0, n) { + if (i == j) continue; + auto CR pj = pos[j]; + flt_ (u32, k, 0, pj.size()) { + line s{pj[k], pj[pj.next(k)]}; + if (!le.toleft(s.l) && !le.toleft(s.r)) evt.emplace_back(s.l, 0), evt.emplace_back(s.r, 0); + else if (!is_ins_SL(s, le)) { + if (point u = ins_LL(le, s); le.toleft(s.l) < 0 && le.toleft(s.r) >= 0) evt.emplace_back(u, -1); + else if (le.toleft(s.l) >= 0 && le.toleft(s.r) < 0) evt.emplace_back(u, 1); + } + } + } + std::ranges::sort(evt); + if (e.l > e.r) std::ranges::reverse(evt); + int sum = 0; + flt_ (u32, i, 0, (u32)evt.size()) { + sum += evt[i].second; + point u = evt[i].first, v = evt[i + 1].first; + if (!(u == v) && chk(u, e) && chk(v, e)) segs[(u32)sum].emplace_back(u, v); + if (v == e.r) break; + } + }; + flt_ (u32, i, 0, (u32)pos.size()) { + auto CR pi = pos[i]; + flt_ (u32, k, 0, pi.size()) cut({pi[k], pi[pi.next(k)]}, i); + } + vec ans(n); + flt_ (u32, i, 0, n) { + std::ranges::sort(segs[i]); + FP sum = 0; + u32 cnt = 0; + flt_ (u32, j, 0, (u32)segs[i].size()) { + if (j > 0 && segs[i][j] == segs[i][j - 1]) segs[i + (++cnt)].push_back(segs[i][j]); + else cnt = 0, sum += segs[i][j].first ^ segs[i][j].second; + } + ans[i] = sum / 2; + } + return ans; +} + +} // namespace tifa_libs::geo + +#endif \ No newline at end of file diff --git a/src/code/geo2d/circle.hpp b/src/code/geo2d/circle.hpp index da3b4d7f6..b407ba883 100644 --- a/src/code/geo2d/circle.hpp +++ b/src/code/geo2d/circle.hpp @@ -18,9 +18,9 @@ struct circle { friend std::ostream &operator<<(std::ostream &os, circle CR c) { return os << c.o << ' ' << c.r; } friend CEXP bool operator==(circle CR l, circle CR r) { return l.o == r.o && l.r == r.r; } - CEXP FP area(FP angle = std::numbers::pi_v * 2) const { return angle * r * r / 2; } - CEXP FP crown_area(FP angle = std::numbers::pi_v * 2) const { return (angle - std::sin(angle)) * r * r / 2; } - CEXP FP arc(FP angle = std::numbers::pi_v * 2) const { return angle * r; } + CEXP FP area(FP angle = pi_v * 2) const { return angle * r * r / 2; } + CEXP FP crown_area(FP angle = pi_v * 2) const { return (angle - std::sin(angle)) * r * r / 2; } + CEXP FP arc(FP angle = pi_v * 2) const { return angle * r; } }; } // namespace tifa_libs::geo diff --git a/src/code/geo2d/cnt_intp_po.hpp b/src/code/geo2d/cnt_intp_po.hpp index 6c9550163..f7eec612d 100644 --- a/src/code/geo2d/cnt_intp_po.hpp +++ b/src/code/geo2d/cnt_intp_po.hpp @@ -11,7 +11,7 @@ namespace tifa_libs::geo { template CEXP u64 cnt_intP_border_po(polygon CR po) { u64 ret = 0; - for (u32 i = 0; i < (u32)po.vs.size(); ++i) ret += math::gcd(fp2uint(abs(po.vs[i].x - po.vs[po.next(i)].x), eps_v), fp2uint(abs(po.vs[i].y - po.vs[po.next(i)].y), eps_v)); + for (u32 i = 0; i < po.size(); ++i) ret += math::gcd(fp2uint(abs(po.vs[i].x - po.vs[po.next(i)].x), eps_v), fp2uint(abs(po.vs[i].y - po.vs[po.next(i)].y), eps_v)); return ret; } // Count of integer point in the polygon, based on Pick theorem diff --git a/src/code/geo2d/coverage_rect_with_min_area.hpp b/src/code/geo2d/coverage_rect_min_area.hpp similarity index 88% rename from src/code/geo2d/coverage_rect_with_min_area.hpp rename to src/code/geo2d/coverage_rect_min_area.hpp index 0d92c64ed..82cb07d20 100644 --- a/src/code/geo2d/coverage_rect_with_min_area.hpp +++ b/src/code/geo2d/coverage_rect_min_area.hpp @@ -1,5 +1,5 @@ -#ifndef TIFALIBS_GEO2D_COVERAGE_RECT_WITH_MIN_AREA -#define TIFALIBS_GEO2D_COVERAGE_RECT_WITH_MIN_AREA +#ifndef TIFALIBS_GEO2D_COVERAGE_RECT_MIN_AREA +#define TIFALIBS_GEO2D_COVERAGE_RECT_MIN_AREA #include "cvh.hpp" #include "dot.hpp" @@ -8,8 +8,8 @@ namespace tifa_libs::geo { // Coverage rectangle with min area template -CEXP polygon coverage_rect_with_min_area(cvh CR ch) { - u32 n = (u32)ch.vs.size(); +CEXP polygon coverage_rect_min_area(cvh CR ch) { + u32 n = ch.size(); if (n == 0) return ch; if (n == 1) return polygon{vec>{ch[0], ch[0], ch[0], ch[0]}}; if (n == 2) return polygon{vec>{ch[0], ch[0], ch[1], ch[1]}}; diff --git a/src/code/geo2d/coverage_rect_with_min_circum.hpp b/src/code/geo2d/coverage_rect_min_circum.hpp similarity index 88% rename from src/code/geo2d/coverage_rect_with_min_circum.hpp rename to src/code/geo2d/coverage_rect_min_circum.hpp index 2d4ccc785..7a5fcb355 100644 --- a/src/code/geo2d/coverage_rect_with_min_circum.hpp +++ b/src/code/geo2d/coverage_rect_min_circum.hpp @@ -1,5 +1,5 @@ -#ifndef TIFALIBS_GEO2D_COVERAGE_RECT_WITH_MIN_CIRCUM -#define TIFALIBS_GEO2D_COVERAGE_RECT_WITH_MIN_CIRCUM +#ifndef TIFALIBS_GEO2D_COVERAGE_RECT_MIN_CIRCUM +#define TIFALIBS_GEO2D_COVERAGE_RECT_MIN_CIRCUM #include "cvh.hpp" @@ -7,8 +7,8 @@ namespace tifa_libs::geo { // Coverage rectangle with min circum template -CEXP polygon coverage_rect_with_min_circum(cT_(cvh) ch) { - u32 n = (u32)ch.vs.size(); +CEXP polygon coverage_rect_min_circum(cT_(cvh) ch) { + u32 n = ch.size(); if (n == 0) return ch; if (n == 1) return polygon{vec>{ch[0], ch[0], ch[0], ch[0]}}; if (n == 2) return polygon{vec>{ch[0], ch[0], ch[1], ch[1]}}; diff --git a/src/code/geo2d/cvh.hpp b/src/code/geo2d/cvh.hpp index 25ee88106..9202b1be0 100644 --- a/src/code/geo2d/cvh.hpp +++ b/src/code/geo2d/cvh.hpp @@ -27,7 +27,7 @@ struct cvh : public polygon { template CEXP cvh &init() { this->reunique(); - u32 n = (u32)this->vs.size(); + u32 n = this->size(); if (n <= 1) return *this; vec> cvh(n * 2); u32 sz_cvh = 0; @@ -47,7 +47,7 @@ struct cvh : public polygon { } CEXP FP diameter() const { - u32 n = (u32)this->vs.size(); + u32 n = this->size(); if (n <= 1) return FP{}; u32 is = 0, js = 0; flt_ (u32, k, 1, n) { @@ -64,7 +64,7 @@ struct cvh : public polygon { } CEXP cvh &do_minkowski_sum_nonstrict(cvh CR r) { - u32 n = (u32)this->vs.size(), m = (u32)r.vs.size(); + u32 n = this->size(), m = r.size(); if (!m) return *this; if (!n) return *this = r; vec> result; @@ -87,17 +87,27 @@ struct cvh : public polygon { CEXP cvh &do_minkowski_sum(cvh CR r) { return do_minkowski_sum_nonstrict(r).init(); } CEXP cvh &do_ins_CVHhP(line CR l) { - u32 n = (u32)this->vs.size(); + u32 n = this->size(); vec> cvc; flt_ (u32, i, 0, n) { point p1 = this->vs[i], p2 = this->vs[this->next(i)]; - int d1 = sgn_cross(l.l, l.r, p1), d2 = sgn_cross(l.l, l.r, p2); + int d1 = l.toleft(p1), d2 = l.toleft(p2); if (d1 >= 0) cvc.push_back(p1); if (d1 * d2 < 0) cvc.push_back(ins_LL({p1, p2}, l)); } this->vs = cvc; return *this; } + template + requires requires(F f, point i, point ni, point j) { f(i, ni, j); } + CEXP void rotcaliper(F &&f) const { + auto CR p = this->vs; + for (u32 i = 0, j = 1; i < p.size(); ++i) { + auto ni = this->next(i); + f(p[i], p[ni], p[j]); + while (!is_lt(cross(p[ni], p[this->next(j)], p[i]) - cross(p[ni], p[j], p[i]))) f(p[i], p[ni], p[j = this->next(j)]); + } + } }; } // namespace tifa_libs::geo diff --git a/src/code/geo2d/fermatp.hpp b/src/code/geo2d/fermatp.hpp index bb266c427..e504dc652 100644 --- a/src/code/geo2d/fermatp.hpp +++ b/src/code/geo2d/fermatp.hpp @@ -11,11 +11,11 @@ namespace tifa_libs::geo { // simulated annealing template point fermatp(polygon CR po, FP begin = 1e10, FP end = eps_v, FP delta = .999) { - static rand::Gen> gen_angle(0, 2 * std::numbers::pi_v); + static rand::Gen> gen_angle(0, 2 * pi_v); auto gen = [](point CR pre, FP t) { return pre + make_P_polar(t, gen_angle()); }; auto fitness = [&po](point CR p) -> FP { math::kahan dis = 0; - for (u32 i = 0; i < po.vs.size(); ++i) dis += dist_PP(po.vs[i], p); + for (u32 i = 0; i < po.size(); ++i) dis += dist_PP(po.vs[i], p); return dis; }; opt::heuristic_sa, decltype(gen), decltype(fitness), FP, FP> sa(gen, fitness, begin, end, delta); diff --git a/src/code/geo2d/ins_cc.hpp b/src/code/geo2d/ins_cc.hpp index 7c0d2ade5..733d661ca 100644 --- a/src/code/geo2d/ins_cc.hpp +++ b/src/code/geo2d/ins_cc.hpp @@ -12,7 +12,7 @@ template CEXP std::optional>> ins_CC(circle CR c1, circle CR c2) { assert(!is_eq(c1.o.x, c2.o.x) || !is_eq(c1.o.y, c2.o.y) || !is_eq(c1.r, c2.r)); auto state = relation_CC(c1, c2); - if (state == RELCC::lyingin_cc || state == RELCC::lyingout_cc) return {}; + if (state == lyingin_cc || state == lyingout_cc) return {}; FP d = min(dist_PP(c1.o, c2.o), c1.r + c2.r); FP y = (c1.r * c1.r - c2.r * c2.r + d * d) / (2 * d), x = std::sqrt(c1.r * c1.r - y * y); point dr = (c2.o - c1.o).do_unit(); diff --git a/src/code/geo2d/ins_pohp.hpp b/src/code/geo2d/ins_pohp.hpp index 5b5c30506..26db968d6 100644 --- a/src/code/geo2d/ins_pohp.hpp +++ b/src/code/geo2d/ins_pohp.hpp @@ -7,11 +7,11 @@ namespace tifa_libs::geo { template CEXP cvh ins_PohP(cT_(cvh) poly, line CR l) { - u32 n = (u32)poly.vs.size(); + u32 n = poly.size(); vec> vs; flt_ (u32, i, 0, n) { point p1 = poly.vs[i], p2 = poly.vs[poly.next(i)]; - int d1 = sgn_cross(l.l, l.r, p1), d2 = sgn_cross(l.l, l.r, p2); + int d1 = l.toleft(p1), d2 = l.toleft(p2); if (d1 >= 0) vs.push_back(p1); if (d1 * d2 < 0) vs.push_back(ins_LL({p1, p2}, l)); } diff --git a/src/code/geo2d/inv_c2c.hpp b/src/code/geo2d/inv_c2c.hpp index 8e4b57806..f574d25bd 100644 --- a/src/code/geo2d/inv_c2c.hpp +++ b/src/code/geo2d/inv_c2c.hpp @@ -6,10 +6,19 @@ namespace tifa_libs::geo { // geometry inverse of a circle which DOES NOT pass through the inversion center +// @param cc reference circle template -CEXP circle inv_C2C(circle CR c, circle CR c1) { - point v = (c1.o - c.o).do_unit(); - point p1 = inv_P2P(c, c1.o + v * c1.r), p2 = inv_P2P(c, c1.o - v * c1.r); +CEXP circle inv_C2C(circle CR rc, circle CR c) { + point v = (c.o - rc.o).do_unit(); + point p1 = inv_P2P(rc, c.o + v * c.r), p2 = inv_P2P(rc, c.o - v * c.r); + return {mid_point(p1, p2), dist_PP(p1, p2) / 2}; +} +// cc.r == 1 +// @param cc reference circle +template +CEXP circle inv_C2C(point CR ro, circle CR c) { + point v = (c.o - ro).do_unit(); + point p1 = inv_P2P(ro, c.o + v * c.r), p2 = inv_P2P(ro, c.o - v * c.r); return {mid_point(p1, p2), dist_PP(p1, p2) / 2}; } diff --git a/src/code/geo2d/inv_c2l.hpp b/src/code/geo2d/inv_c2l.hpp index 1874478a2..78ad546f3 100644 --- a/src/code/geo2d/inv_c2l.hpp +++ b/src/code/geo2d/inv_c2l.hpp @@ -7,10 +7,20 @@ namespace tifa_libs::geo { // geometry inverse of a circle which pass through the inversion center +// @param rc reference circle +// @param o circle center template -CEXP line inv_C2L(circle CR c, circle CR c1) { - point v = (c1.o - c.o).do_rot90(); - return {inv_P2P(c, c1.o + v), inv_P2P(c, c1.o - v)}; +CEXP line inv_C2L(circle CR rc, point CR o) { + point v = (o - rc.o).do_rot90(); + return {inv_P2P(rc, o + v), inv_P2P(rc, o - v)}; +} +// rc.r == 1 +// @param rc reference circle +// @param o circle center +template +CEXP line inv_C2L(point CR ro, point CR o) { + point v = (o - ro).do_rot90(); + return {inv_P2P(ro, o + v), inv_P2P(ro, o - v)}; } } // namespace tifa_libs::geo diff --git a/src/code/geo2d/inv_l2c.hpp b/src/code/geo2d/inv_l2c.hpp index dce2b0354..698eba74f 100644 --- a/src/code/geo2d/inv_l2c.hpp +++ b/src/code/geo2d/inv_l2c.hpp @@ -7,10 +7,18 @@ namespace tifa_libs::geo { // geometry inverse of a line +// @param rc reference circle template -CEXP circle inv_L2C(circle CR c, line CR l) { - point p1 = inv_P2P(c, l.l), p2 = inv_P2P(c, l.r); - return make_C_PPP(p1, p2, c.o); +CEXP circle inv_L2C(circle CR rc, line CR l) { + point p1 = inv_P2P(rc, l.l), p2 = inv_P2P(rc, l.r); + return make_C_PPP(p1, p2, rc.o); +} +// rc.r == 1 +// @param rc reference circle +template +CEXP circle inv_L2C(point CR o, line CR l) { + point p1 = inv_P2P(o, l.l), p2 = inv_P2P(o, l.r); + return make_C_PPP(p1, p2, o); } } // namespace tifa_libs::geo diff --git a/src/code/geo2d/inv_p2p.hpp b/src/code/geo2d/inv_p2p.hpp index 312c0ff92..618962b1a 100644 --- a/src/code/geo2d/inv_p2p.hpp +++ b/src/code/geo2d/inv_p2p.hpp @@ -6,10 +6,18 @@ namespace tifa_libs::geo { // geometry inverse of a point +// @param rc reference circle template -CEXP point inv_P2P(circle CR c, point CR p) { - point v = p - c.o; - return c.o + v * (c.r * c.r / v.norm2()); +CEXP point inv_P2P(circle CR rc, point CR p) { + point v = p - rc.o; + return rc.o + v * (rc.r * rc.r / v.norm2()); +} +// rc.r == 1 +// @param rc reference circle +template +CEXP point inv_P2P(point CR ro, point CR p) { + point v = p - ro; + return ro + v / v.norm2(); } } // namespace tifa_libs::geo diff --git a/src/code/geo2d/is_ins_sl.hpp b/src/code/geo2d/is_ins_sl.hpp new file mode 100644 index 000000000..2dcefc2aa --- /dev/null +++ b/src/code/geo2d/is_ins_sl.hpp @@ -0,0 +1,25 @@ +#ifndef TIFALIBS_GEO2D_IS_INS_SL +#define TIFALIBS_GEO2D_IS_INS_SL + +#include "line.hpp" + +namespace tifa_libs::geo { + +// judge if segment and line are intersected +//! containing endpoints +template +CEXP bool is_ins_SL(line CR s, line CR l) { + auto a = l.toleft(s.l), b = l.toleft(s.r); + return !a || !b || a != b; +} +// judge if segment and line are intersected +//! NOT containing endpoints +template +CEXP bool is_ins_SL_strict(line CR s, line CR l) { + auto a = l.toleft(s.l), b = l.toleft(s.r); + return a && b && !(a + b); +} + +} // namespace tifa_libs::geo + +#endif \ No newline at end of file diff --git a/src/code/geo2d/is_ins_ss.hpp b/src/code/geo2d/is_ins_ss.hpp index 109cd3f9a..ba7df035e 100644 --- a/src/code/geo2d/is_ins_ss.hpp +++ b/src/code/geo2d/is_ins_ss.hpp @@ -6,14 +6,14 @@ namespace tifa_libs::geo { -// judge if two segments are intersected or not +// judge if two segments are intersected //! containing endpoints template -CEXP bool is_ins_SS(line CR s1, line CR s2) { return is_intersect(s1.l.x, s1.r.x, s2.l.x, s2.r.x) && is_intersect(s1.l.y, s1.r.y, s2.l.y, s2.r.y) && sgn_cross(s1.l, s1.r, s2.l) * sgn_cross(s1.l, s1.r, s2.r) <= 0 && sgn_cross(s2.l, s2.r, s1.l) * sgn_cross(s2.l, s2.r, s1.r) <= 0; } -// judge if two segments are intersected or not +CEXP bool is_ins_SS(line CR s1, line CR s2) { return is_intersect(s1.l.x, s1.r.x, s2.l.x, s2.r.x) && is_intersect(s1.l.y, s1.r.y, s2.l.y, s2.r.y) && s1.toleft(s2.l) * s1.toleft(s2.r) <= 0 && s2.toleft(s1.l) * s2.toleft(s1.r) <= 0; } +// judge if two segments are intersected //! NOT containing endpoints template -CEXP bool is_ins_SS_strict(line CR s1, line CR s2) { return sgn_cross(s1.l, s1.r, s2.l) * sgn_cross(s1.l, s1.r, s2.r) < 0 && sgn_cross(s2.l, s2.r, s1.l) * sgn_cross(s2.l, s2.r, s1.r) < 0; } +CEXP bool is_ins_SS_strict(line CR s1, line CR s2) { return s1.toleft(s2.l) * s1.toleft(s2.r) < 0 && s2.toleft(s1.l) * s2.toleft(s1.r) < 0; } } // namespace tifa_libs::geo diff --git a/src/code/geo2d/is_on_s.hpp b/src/code/geo2d/is_on_s.hpp index cbaafb3fb..f24d418d5 100644 --- a/src/code/geo2d/is_on_s.hpp +++ b/src/code/geo2d/is_on_s.hpp @@ -12,7 +12,7 @@ template CEXP bool is_on_S(line CR s, point CR p) { return is_on_same_L(s.l, s.r, p) && is_in_middle(s.l, p, s.r); } //! NOT containing endpoints template -CEXP bool is_on_S_strict(line CR s, point CR p) { return sgn_cross(s.l, s.r, p) == 0 && sgn((p - s.l) * (s.l - s.r)) * sgn((p - s.r) * (s.l - s.r)) < 0; } +CEXP bool is_on_S_strict(line CR s, point CR p) { return s.toleft(p) == 0 && sgn((p - s.l) * (s.l - s.r)) * sgn((p - s.r) * (s.l - s.r)) < 0; } } // namespace tifa_libs::geo diff --git a/src/code/geo2d/line.hpp b/src/code/geo2d/line.hpp index f49e2fb68..b20c52824 100644 --- a/src/code/geo2d/line.hpp +++ b/src/code/geo2d/line.hpp @@ -10,7 +10,7 @@ struct line { point l, r; CEXP line() {} CEXP line(point CR s, point CR t) : l(s), r(t) {} - CEXP line(point CR s, FP angle_x) : l(s), r(s + is_eq(angle_x, std::numbers::pi_v / 2) ? point{0, 1} : point{1, std::tan(angle_x)}) { assert(angle_x > 0 && angle_x < std::numbers::pi_v); } + CEXP line(point CR s, FP angle_x) : l(s), r(s + is_eq(angle_x, pi_v / 2) ? point{0, 1} : point{1, std::tan(angle_x)}) { assert(angle_x > 0 && angle_x < pi_v); } // ax + by + c = 0 CEXP line(FP a, FP b, FP c) { if (is_zero(a)) l = {0, -c / b}, r = {1, -c / b}; @@ -37,10 +37,11 @@ struct line { return -sgn(vl ^ vr); } + CEXP int toleft(point CR p) const { return sgn_cross(l, r, p); } // half plane - CEXP bool is_include_strict(point CR p) const { return is_pos(cross(l, r, p)); } + CEXP bool is_include_strict(point CR p) const { return toleft(p) > 0; } // half plane - CEXP bool is_include(point CR p) const { return !is_neg(cross(l, r, p)); } + CEXP bool is_include(point CR p) const { return toleft(p) >= 0; } // translate @dist along the direction of half plane CEXP line& do_push(FP dist) { diff --git a/src/code/geo2d/make_c_pcc_ex.hpp b/src/code/geo2d/make_c_pcc_ex.hpp new file mode 100644 index 000000000..7bf6e5514 --- /dev/null +++ b/src/code/geo2d/make_c_pcc_ex.hpp @@ -0,0 +1,39 @@ +#ifndef TIFALIBS_GEO2D_MAKE_C_PCC_EX +#define TIFALIBS_GEO2D_MAKE_C_PCC_EX + +#include "../edh/discretization.hpp" +#include "extan_cc.hpp" +#include "intan_cc.hpp" +#include "inv_c2c.hpp" +#include "inv_l2c.hpp" +#include "is_on_same_l.hpp" +#include "rel_cc.hpp" +#include "rel_cp.hpp" + +namespace tifa_libs::geo { + +// make circle by point passed through and 2 external tagante circle +// result size: 0 to 4 +template +CEXP vec> make_C_PCC_ex(point CR p, circle c1, circle c2) { + if (relation_CC(c1, c2) == lyingin_cc || relation_CP(c1, p) != outside_cp || relation_CP(c2, p) != outside_cp) return {}; + vec> vl; + if (auto _ = intan_CC(c1 = inv_C2C(p, c1), c2 = inv_C2C(p, c2)); _.has_value()) { + auto &&[l1, l2] = _.value(); + if (!is_on_same_L(p, l1.l, l1.r)) vl.push_back(l1); + if (!is_on_same_L(p, l2.l, l2.r)) vl.push_back(l2); + } + if (auto _ = extan_CC(c1, c2); _.has_value()) { + auto &&[l1, l2] = _.value(); + if (!is_on_same_L(p, l1.l, l1.r)) vl.push_back(l1); + if (!is_on_same_L(p, l2.l, l2.r)) vl.push_back(l2); + } + uniq(vl); + vec> vc; + for (auto CR l : vl) vc.push_back(inv_L2C(p, l)); + return vc; +} + +} // namespace tifa_libs::geo + +#endif \ No newline at end of file diff --git a/src/code/geo2d/make_c_rcc_ex.hpp b/src/code/geo2d/make_c_rcc_ex.hpp index 3ab1a392e..abc31aeb1 100644 --- a/src/code/geo2d/make_c_rcc_ex.hpp +++ b/src/code/geo2d/make_c_rcc_ex.hpp @@ -10,7 +10,7 @@ namespace tifa_libs::geo { // maybe duplicate template CEXP std::optional>> make_C_rCC_ex(FP r, circle CR c1, circle CR c2) { - if (relation_CC(c1, c2) == RELCC::lyingin_cc) return {}; + if (relation_CC(c1, c2) == lyingin_cc) return {}; if (auto ps = ins_CC({c1.o, c1.r + r}, {c2.o, c2.r + r}); !ps.has_value()) return {}; else return ptt>{{ps.value().first, r}, {ps.value().second, r}}; } diff --git a/src/code/geo2d/massp.hpp b/src/code/geo2d/massp.hpp index 124778291..a284c2b78 100644 --- a/src/code/geo2d/massp.hpp +++ b/src/code/geo2d/massp.hpp @@ -9,7 +9,7 @@ template CEXP point massp(polygon CR po) { point ret{}; math::kahan area{}; - u32 n = (u32)po.vs.size(); + u32 n = po.size(); if (n == 0) return ret; if (n == 1) return po.vs[0]; for (u32 i = 1; i < n - 1; ++i) { @@ -18,7 +18,7 @@ CEXP point massp(polygon CR po) { area += _; ret += (po.vs[0] + po.vs[i] + po.vs[i + 1]) * (_ / 3); } - if (!is_zero(area)) ret /= area; + if (!is_zero(area)) ret /= (FP)area; return ret; } diff --git a/src/code/geo2d/max_area_t.hpp b/src/code/geo2d/max_area_t.hpp index 6e5593915..44cefa4fb 100644 --- a/src/code/geo2d/max_area_t.hpp +++ b/src/code/geo2d/max_area_t.hpp @@ -9,11 +9,11 @@ namespace tifa_libs::geo { // Triangle inside with max area template CEXP triangle max_area_T(cT_(cvh) ch) { - if (ch.vs.size() < 3) return triangle{ch.vs[0], ch.vs[0], ch.vs[0]}; + if (ch.size() < 3) return triangle{ch.vs[0], ch.vs[0], ch.vs[0]}; u32 j = 1, k = 2; FP ans = 0, tmp, new_tmp; u32 is = 0, js = 1, ks = 2; - for (u32 i = 0; i < ch.vs.size(); ++i) { + for (u32 i = 0; i < ch.size(); ++i) { if (i == j) j = ch.next(j); if (j == k) k = ch.next(k); if (is_gt(tmp = cross(ch.vs[i], ch.vs[j], ch.vs[k]), ans)) ans = tmp, is = i, js = j, ks = k; diff --git a/src/code/geo2d/max_dis_cvh.hpp b/src/code/geo2d/max_dis_cvh.hpp index 299fd87e7..977747308 100644 --- a/src/code/geo2d/max_dis_cvh.hpp +++ b/src/code/geo2d/max_dis_cvh.hpp @@ -9,7 +9,7 @@ namespace tifa_libs::geo { template CEXP FP max_dis_CVH(cT_(cvh) ch1, cT_(cvh) ch2) { u32 is = 0, js = 0; - u32 szl = (u32)ch1.vs.size(), szr = (u32)ch2.vs.size(); + u32 szl = ch1.size(), szr = ch2.size(); FP ans{}; flt_ (u32, i, 0, szl) is = ch1[i].y < ch1[is].y ? i : is; flt_ (u32, i, 0, szr) js = ch2[i].y < ch2[js].y ? i : js; diff --git a/src/code/geo2d/min_cover_c.hpp b/src/code/geo2d/min_cover_c.hpp index 2829dd3bb..38afbdec2 100644 --- a/src/code/geo2d/min_cover_c.hpp +++ b/src/code/geo2d/min_cover_c.hpp @@ -13,13 +13,13 @@ CEXP circle min_cover_C(vec> CR vp) { circle ret{vp.front(), 0}; u32 sz = (u32)vp.size(); flt_ (u32, i, 1, sz) { - if (relation_CP(ret, vp[i]) != RELCP::outside_cp) continue; + if (relation_CP(ret, vp[i]) != outside_cp) continue; ret = circle{vp[i], 0}; flt_ (u32, j, 0, i) { - if (relation_CP(ret, vp[j]) != RELCP::outside_cp) continue; + if (relation_CP(ret, vp[j]) != outside_cp) continue; ret = circle{mid_point(vp[i], vp[j]), dist_PP(vp[i], vp[j]) / 2}; flt_ (u32, k, 0, j) { - if (relation_CP(ret, vp[k]) != RELCP::outside_cp) continue; + if (relation_CP(ret, vp[k]) != outside_cp) continue; ret = make_C_PPP(vp[i], vp[j], vp[k]); } } diff --git a/src/code/geo2d/min_dis_cvh.hpp b/src/code/geo2d/min_dis_cvh.hpp index fa58a1775..6f4983cb8 100644 --- a/src/code/geo2d/min_dis_cvh.hpp +++ b/src/code/geo2d/min_dis_cvh.hpp @@ -9,7 +9,7 @@ namespace tifa_libs::geo { template CEXP FP min_dis_CVH(cT_(cvh) ch1, cT_(cvh) ch2) { u32 is = 0, js = 0; - u32 szl = (u32)ch1.vs.size(), szr = (u32)ch2.vs.size(); + u32 szl = ch1.size(), szr = ch2.size(); FP ans = std::numeric_limits::max(); flt_ (u32, i, 0, szl) is = ch1[i].y < ch1[is].y ? i : is; flt_ (u32, i, 0, szr) js = ch2[i].y < ch2[js].y ? i : js; diff --git a/src/code/geo2d/point.hpp b/src/code/geo2d/point.hpp index 2de7adba0..e4d5a7ec0 100644 --- a/src/code/geo2d/point.hpp +++ b/src/code/geo2d/point.hpp @@ -14,37 +14,50 @@ struct point { friend std::ostream &operator<<(std::ostream &os, point CR p) { return os << p.x << ' ' << p.y; } // s * r + t * (1 - r) - friend CEXP point lerp(point CR s, point CR t, FP r) { return s * r + t * (1 - r); } + template + friend CEXP point lerp(point CR s, point CR t, T r) { return s * r + t * (1 - r); } friend CEXP point mid_point(point CR s, point CR t) { return lerp(s, t, .5); } - CEXP point &operator+=(FP n) { + template + CEXP point &operator+=(T n) { this->x += n; this->y += n; return *this; } - CEXP point &operator-=(FP n) { + template + CEXP point &operator-=(T n) { this->x -= n; this->y -= n; return *this; } - CEXP point &operator*=(FP n) { + template + CEXP point &operator*=(T n) { this->x *= n; this->y *= n; return *this; } - CEXP point &operator/=(FP n) { + template + CEXP point &operator/=(T n) { this->x /= n; this->y /= n; return *this; } - friend CEXP point operator+(point x, FP n) { return x += n; } - friend CEXP point operator+(FP n, point x) { return x += n; } - friend CEXP point operator-(point x, FP n) { return x -= n; } - friend CEXP point operator-(FP n, point x) { return x -= n; } - friend CEXP point operator*(point x, FP n) { return x *= n; } - friend CEXP point operator*(FP n, point x) { return x *= n; } - friend CEXP point operator/(point x, FP n) { return x /= n; } - friend CEXP point operator/(FP n, point x) { return x /= n; } + template + friend CEXP point operator+(point x, T n) { return x += n; } + template + friend CEXP point operator+(T n, point x) { return x += n; } + template + friend CEXP point operator-(point x, T n) { return x -= n; } + template + friend CEXP point operator-(T n, point x) { return x -= n; } + template + friend CEXP point operator*(point x, T n) { return x *= n; } + template + friend CEXP point operator*(T n, point x) { return x *= n; } + template + friend CEXP point operator/(point x, T n) { return x /= n; } + template + friend CEXP point operator/(T n, point x) { return x /= n; } CEXP point &operator+=(point CR p) { this->x += p.x; @@ -69,16 +82,26 @@ struct point { CEXP FP operator*(point CR p) const { return x * p.x + y * p.y; } CEXP FP operator^(point CR p) const { return x * p.y - y * p.x; } - CEXP auto arg() const { return std::atan2(y, x); } + CEXP FP arg() const { + static_assert(std::is_floating_point_v); + return std::atan2(y, x); + } CEXP FP norm2() const { return x * x + y * y; } - CEXP FP norm() const { return std::hypot(x, y); } - CEXP point &do_unit() { return *this /= norm(); } + CEXP FP norm() const { + static_assert(std::is_floating_point_v); + return std::hypot(x, y); + } + CEXP point &do_unit() { + static_assert(std::is_floating_point_v); + return *this /= norm(); + } static CEXP u32 QUAD__[9] = {6, 7, 8, 5, 0, 1, 4, 3, 2}; // 4 3 2 // 5 0 1 // 6 7 8 CEXP u32 quad() const { return QUAD__[(sgn(y) + 1) * 3 + sgn(x) + 1]; } + CEXP int toleft(point CR p) const { return sgn(*this ^ p); } CEXP point &do_rot(FP theta) { FP x0 = x, y0 = y, ct = std::cos(theta), st = std::sin(theta); diff --git a/src/code/geo2d/polygon.hpp b/src/code/geo2d/polygon.hpp index 5f810aaee..78bf9dc8b 100644 --- a/src/code/geo2d/polygon.hpp +++ b/src/code/geo2d/polygon.hpp @@ -25,6 +25,8 @@ struct polygon { for (auto it = p.vs.begin(); it != p.vs.end() - 1; ++it) os << *it << ' '; return os << p.vs.back(); } + + CEXP u32 size() const { return (u32)vs.size(); } CEXP point &operator[](u32 x) { return vs[x]; } CEXP point CR operator[](u32 x) const { return vs[x]; } @@ -39,23 +41,24 @@ struct polygon { CEXP auto prev(TPN vec>::const_iterator it) const { return --(it == vs.begin() ? it = vs.end() : it); } CEXP auto next(TPN vec>::const_iterator it) const { return ++it == vs.end() ? vs.begin() : it; } - CEXP u32 prev(u32 idx) const { return idx == 0 ? (u32)vs.size() - 1 : idx - 1; } - CEXP u32 next(u32 idx) const { return idx + 1 == (u32)vs.size() ? 0 : idx + 1; } + CEXP u32 prev(u32 idx) const { return idx == 0 ? size() - 1 : idx - 1; } + CEXP u32 next(u32 idx) const { return idx + 1 == size() ? 0 : idx + 1; } CEXP FP circum() const { math::kahan ret = dist_PP(vs.back(), vs.front()); - for (u32 i = 0; i < (u32)vs.size() - 1; ++i) ret += dist_PP(vs[i], vs[i + 1]); + flt_ (u32, i, 0, size() - 1) ret += dist_PP(vs[i], vs[i + 1]); return ret; } - CEXP FP area() const { - if (vs.size() < 3) return 0; + CEXP FP area2() const { + if (size() < 3) return 0; math::kahan ret = vs.back() ^ vs.front(); - for (u32 i = 0; i < (u32)vs.size() - 1; ++i) ret += vs[i] ^ vs[i + 1]; - return ret / 2; + flt_ (u32, i, 0, size() - 1) ret += vs[i] ^ vs[i + 1]; + return ret; } + CEXP f128 area() const { return area2() * .5l; } CEXP bool is_convex() const { bool flag[2] = {false, false}; - u32 n = (u32)vs.size(); + u32 n = size(); if (n < 3) return true; for (u32 i = 0, j = next(i), k = next(j); i < n; ++i, j = next(j), k = next(k)) { auto sgn = sgn_cross(vs[i], vs[j], vs[k]); @@ -64,6 +67,20 @@ struct polygon { } return true; } + // @return nullopt if @p on board of polygon, otherwise winding number + CEXP std::optional winding(point CR p) const { + u32 cnt = 0; + flt_ (u32, i, 0, size()) { + auto &&u = vs[i], &&v = vs[next(i)]; + if (!sgn_cross(p, u, v) && !sgn_dot(p, u, v)) return {}; + if (is_zero(u.y - v.y)) continue; + if (is_lt(u.y, v.y) && !is_pos(u, v, p)) continue; + if (is_gt(u.y, v.y) && !is_neg(u, v, p)) continue; + if (is_lt(u.y, p.y) && !is_lt(v.y, p.y)) ++cnt; + if (!is_lt(u.y, p.y) && is_lt(v.y, p.y)) --cnt; + } + return cnt; + } }; } // namespace tifa_libs::geo diff --git a/src/code/geo2d/rel_poc.hpp b/src/code/geo2d/rel_poc.hpp index 0297931ad..1948e0545 100644 --- a/src/code/geo2d/rel_poc.hpp +++ b/src/code/geo2d/rel_poc.hpp @@ -18,11 +18,11 @@ enum RELPoC { template CEXP RELPoC relation_PoC(polygon CR po, circle CR c) { auto x = covered_poc; - if (relation_PoP(po, c.o) != RELPoP::inside_pop) return otherwise_poc; - for (u32 i = 0; i < (u32)po.vs.size(); ++i) { + if (relation_PoP(po, c.o) != inside_pop) return otherwise_poc; + for (u32 i = 0; i < po.size(); ++i) { RELCS state = relation_CS(c, {po.vs[i], po.vs[po.next(i)]}); - if (state == RELCS::intersect_cs) return otherwise_poc; - if (state == RELCS::tagante_cs) x = touchin_poc; + if (state == intersect_cs) return otherwise_poc; + if (state == tagante_cs) x = touchin_poc; } return x; } diff --git a/src/code/geo2d/rel_pop.hpp b/src/code/geo2d/rel_pop.hpp index 835c9b11d..067f2fd56 100644 --- a/src/code/geo2d/rel_pop.hpp +++ b/src/code/geo2d/rel_pop.hpp @@ -20,12 +20,12 @@ CEXP RELPoP relation_PoP(polygon CR po, point CR p) { for (auto &&now : po.vs) if (now == p) return onendpoint_pop; bool result = false; - for (u32 i = 0; i < po.vs.size(); ++i) { - point now_p = po.vs[i], next_p = po.vs[po.next(i)]; - if (is_on_S({now_p, next_p}, p)) return onborder_pop; - if (!is_gt(now_p.y, next_p.y)) swap(now_p, next_p); - if (is_gt(p.y, now_p.y) || !is_gt(p.y, next_p.y)) continue; - result ^= sgn_cross(p, now_p, next_p) > 0; + for (u32 i = 0; i < po.size(); ++i) { + point u = po.vs[i], v = po.vs[po.next(i)]; + if (is_on_S({u, v}, p)) return onborder_pop; + if (!is_gt(u.y, v.y)) swap(u, v); + if (is_gt(p.y, u.y) || !is_gt(p.y, v.y)) continue; + result ^= sgn_cross(p, u, v) > 0; } return result ? inside_pop : outside_pop; } @@ -34,7 +34,7 @@ template CEXP RELPoP relation_CvhP(cT_(cvh) cvh, point CR p) { for (auto &&now : cvh.vs) if (now == p) return onendpoint_pop; - u32 sz = (u32)cvh.vs.size(); + u32 sz = cvh.size(); flt_ (u32, i, 0, sz) if (is_on_S({cvh.vs[i], cvh.vs[cvh.next(i)]}, p)) return onborder_pop; if (sz < 3) return outside_pop; diff --git a/src/code/geo2d/tcenter_x.hpp b/src/code/geo2d/tcenter_x.hpp index a6b45acda..fb7e2c9e4 100644 --- a/src/code/geo2d/tcenter_x.hpp +++ b/src/code/geo2d/tcenter_x.hpp @@ -9,7 +9,7 @@ namespace tifa_libs::geo { template CEXP point center_X(triangle CR t) { auto [A, B, C] = t.angles(); - return t.trilinears(1 / std::sin(A + std::numbers::pi_v / 3), 1 / std::sin(B + std::numbers::pi_v / 3), 1 / std::sin(C + std::numbers::pi_v / 3)); + return t.trilinears(1 / std::sin(A + pi_v / 3), 1 / std::sin(B + pi_v / 3), 1 / std::sin(C + pi_v / 3)); } } // namespace tifa_libs::geo diff --git a/src/code/graph/chrom_num.hpp b/src/code/graph/chrom_num.hpp index 59556dbdf..c82367b1f 100644 --- a/src/code/graph/chrom_num.hpp +++ b/src/code/graph/chrom_num.hpp @@ -2,7 +2,7 @@ #define TIFALIBS_GRAPH_CHROM_NUM #include "../bit/parity.hpp" -#include "../math/mul_mod_s.hpp" +#include "../math/mul_mod.hpp" #include "alist.hpp" namespace tifa_libs::graph { diff --git a/src/code/graph/cle.hpp b/src/code/graph/cle.hpp index 3e1f3424f..a79b892b3 100644 --- a/src/code/graph/cle.hpp +++ b/src/code/graph/cle.hpp @@ -9,7 +9,7 @@ namespace tifa_libs::graph { // edge: {w, u, v} template CEXP vec> cle(u32 n, u32 root, vec> CR arcs) { - ds::SkewHeap heap; + ds::skew_heap heap; ds::dsu_basic<> uf(n); vecu used(n, -1_u32), from(n), come(n, -1_u32); vec from_cost(n); diff --git a/src/code/graph/dinic.hpp b/src/code/graph/dinic.hpp index 39ad64501..6839c02c1 100644 --- a/src/code/graph/dinic.hpp +++ b/src/code/graph/dinic.hpp @@ -9,8 +9,7 @@ template class dinic { struct TIFA { u32 to; - EW w; - u32 inv; + EW w, inv; }; const u32 N; diff --git a/src/code/math/kahan.hpp b/src/code/math/kahan.hpp index 273eca2b7..b4a4d63be 100644 --- a/src/code/math/kahan.hpp +++ b/src/code/math/kahan.hpp @@ -6,13 +6,13 @@ namespace tifa_libs::math { template -class kahan { +class kahan_fp { FP sum, c; public: - CEXP kahan(FP val = 0) : sum(val), c(0) {} + CEXP kahan_fp(FP val = 0) : sum(val), c(0) {} - CEXP kahan& operator+=(FP x) { + CEXP kahan_fp& operator+=(FP x) { FP y = x - c; volatile FP t = sum + y, z = t - sum; c = z - y, sum = t; @@ -21,6 +21,9 @@ class kahan { CEXP operator FP() const { return sum; } }; +template +using kahan = std::conditional_t, kahan_fp, FP>; + } // namespace tifa_libs::math #endif \ No newline at end of file diff --git a/src/code/math/lagrange_interp0.hpp b/src/code/math/lagrange_interp0.hpp index 64740ce7a..f5dc63ec9 100644 --- a/src/code/math/lagrange_interp0.hpp +++ b/src/code/math/lagrange_interp0.hpp @@ -2,8 +2,7 @@ #define TIFALIBS_MATH_LAGRANGE_INTERP0 #include "../comb/gen_ifact.hpp" -#include "mul_mod_s.hpp" -#include "mul_mod_u.hpp" +#include "mul_mod.hpp" namespace tifa_libs::math { diff --git a/src/code/math/mint_ds.hpp b/src/code/math/mint_ds.hpp deleted file mode 100644 index cf9583725..000000000 --- a/src/code/math/mint_ds.hpp +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef TIFALIBS_MATH_MINT_DS -#define TIFALIBS_MATH_MINT_DS - -#include "mint.hpp" - -namespace tifa_libs::math { - -template -class mint_ds : public mint, u32> { - using base = mint, u32>; - friend base; - - struct barrett { - u32 m_; - u64 im; - // @param m `1 <= m < 2^31` - explicit CEXP barrett(u32 m = 998244353) : m_(m), im(-1_u64 / m + 1) {} - // @return m - CEXP u32 umod() const { return m_; } - CEXP u32 mul(u32 a, u32 b) const { - u64 z = (u64)a * b, x = (u64)(((u128)z * im) >> 64); - u32 v = (u32)(z - x * m_); - return v + (m_ <= v ? m_ : 0); - } - }; - - static inline barrett bt_; - - public: - static CEXP bool FIXED_MOD = false; - static CEXP void set_mod(u32 m) { - assert(1 <= m); - bt_ = barrett(m); - } - - CEXP mint_ds() {} - template - CEXP mint_ds(T v) { this->v_ = mod_(v); } - - private: - using raw_t = TPN base::raw_type; - using sraw_t = TPN base::sraw_type; - template - static CEXP raw_t mod_(T v) { - i64 x = i64(v % (i64)mod_()); - return raw_t(x + (x < 0 ? mod_() : 0)); - } - template - static CEXP raw_t mod_(T v) { return raw_t(v % mod_()); } - static CEXP raw_t mod_() { return bt_.umod(); } - CEXP raw_t val_() const { return this->v_; } - CEXP raw_t &data_() { return this->v_; } - - CEXP mint_ds neg_() const { return -(sraw_t)val_(); } - CEXP mint_ds &adde_(mint_ds CR r) { - data_() += r.val_(); - if (val_() >= mod_()) data_() -= mod_(); - return *this; - } - CEXP mint_ds &sube_(mint_ds CR r) { - data_() -= r.val_(); - if (val_() >= mod_()) data_() += mod_(); - return *this; - } - CEXP mint_ds &mule_(mint_ds CR r) { - data_() = bt_.mul(val_(), r.val_()); - return *this; - } -}; - -} // namespace tifa_libs::math - -#endif \ No newline at end of file diff --git a/src/code/math/mint_ss.hpp b/src/code/math/mint_ss.hpp deleted file mode 100644 index ef162637b..000000000 --- a/src/code/math/mint_ss.hpp +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef TIFALIBS_MATH_MINT_SS -#define TIFALIBS_MATH_MINT_SS - -#include "mint.hpp" - -namespace tifa_libs::math { - -template -class mint_ss : public mint, u32> { - using base = mint, u32>; - friend base; - static_assert(MOD >= 1); - - public: - static CEXP bool FIXED_MOD = true; - CEXP mint_ss() {} - template - CEXP mint_ss(T v) { this->v_ = mod_(v); } - - private: - using raw_t = TPN base::raw_type; - using sraw_t = TPN base::sraw_type; - template - static CEXP raw_t mod_(T v) { - i64 x = i64(v % (i64)mod_()); - return raw_t(x + (x < 0 ? mod_() : 0)); - } - template - static CEXP raw_t mod_(T v) { return raw_t(v % mod_()); } - static CEXP raw_t mod_() { return MOD; } - CEXP raw_t val_() const { return this->v_; } - CEXP raw_t &data_() { return this->v_; } - - CEXP mint_ss neg_() const { return -(sraw_t)val_(); } - CEXP mint_ss &adde_(mint_ss CR r) { - data_() += r.val_(); - if (val_() >= mod_()) data_() -= mod_(); - return *this; - } - CEXP mint_ss &sube_(mint_ss CR r) { - data_() -= r.val_(); - if (val_() >= mod_()) data_() += mod_(); - return *this; - } - CEXP mint_ss &mule_(mint_ss CR r) { - data_() = u32((u64)val_() * r.val_() % mod_()); - return *this; - } -}; - -} // namespace tifa_libs::math - -#endif \ No newline at end of file diff --git a/src/code/math/mul_mod_s.hpp b/src/code/math/mul_mod.hpp similarity index 58% rename from src/code/math/mul_mod_s.hpp rename to src/code/math/mul_mod.hpp index 16d26ee97..b19739812 100644 --- a/src/code/math/mul_mod_s.hpp +++ b/src/code/math/mul_mod.hpp @@ -1,5 +1,5 @@ -#ifndef TIFALIBS_MATH_MUL_MOD_S -#define TIFALIBS_MATH_MUL_MOD_S +#ifndef TIFALIBS_MATH_MUL_MOD +#define TIFALIBS_MATH_MUL_MOD #include "safe_mod.hpp" @@ -9,6 +9,10 @@ CEXP i64 mul_mod_s(i64 a, i64 b, u64 mod) { if (std::bit_width((u64)abs(a)) + std::bit_width((u64)abs(b)) < 64) return safe_mod(a * b % (i64)mod, mod); return safe_mod((i64)((i128)a * b % mod), mod); } +CEXP u64 mul_mod_u(u64 a, u64 b, u64 mod) { + if (std::bit_width(a) + std::bit_width(b) <= 64) return a * b % mod; + return (u64)((u128)a * b % mod); +} } // namespace tifa_libs::math diff --git a/src/code/math/mul_mod_u.hpp b/src/code/math/mul_mod_u.hpp deleted file mode 100644 index 7593d14d5..000000000 --- a/src/code/math/mul_mod_u.hpp +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef TIFALIBS_MATH_MUL_MOD_U -#define TIFALIBS_MATH_MUL_MOD_U - -#include "../util/util.hpp" - -namespace tifa_libs::math { - -CEXP u64 mul_mod_u(u64 a, u64 b, u64 mod) { - if (std::bit_width(a) + std::bit_width(b) <= 64) return a * b % mod; - return (u64)((u128)a * b % mod); -} - -} // namespace tifa_libs::math - -#endif \ No newline at end of file diff --git a/src/code/math/qpow_mod.hpp b/src/code/math/qpow_mod.hpp index c105eb11a..ab34a8989 100644 --- a/src/code/math/qpow_mod.hpp +++ b/src/code/math/qpow_mod.hpp @@ -1,7 +1,7 @@ #ifndef TIFALIBS_MATH_QPOW_MOD #define TIFALIBS_MATH_QPOW_MOD -#include "mul_mod_u.hpp" +#include "mul_mod.hpp" namespace tifa_libs::math { diff --git a/src/code/math/rpow.hpp b/src/code/math/rpow.hpp index 67ba47c80..ed5df661f 100644 --- a/src/code/math/rpow.hpp +++ b/src/code/math/rpow.hpp @@ -1,7 +1,7 @@ #ifndef TIFALIBS_MATH_RPOW #define TIFALIBS_MATH_RPOW -#include "mul_mod_u.hpp" +#include "mul_mod.hpp" namespace tifa_libs::math { diff --git a/src/code/nt/is_prime.hpp b/src/code/nt/is_prime.hpp index fd3bdefef..a6b728011 100644 --- a/src/code/nt/is_prime.hpp +++ b/src/code/nt/is_prime.hpp @@ -1,7 +1,7 @@ #ifndef TIFALIBS_MATH_IS_PRIME #define TIFALIBS_MATH_IS_PRIME -#include "../math/mul_mod_u.hpp" +#include "../math/mul_mod.hpp" #include "../math/qpow_mod.hpp" namespace tifa_libs::math { diff --git a/src/code/nt/pfactors.hpp b/src/code/nt/pfactors.hpp index eac261b46..e69f5194f 100644 --- a/src/code/nt/pfactors.hpp +++ b/src/code/nt/pfactors.hpp @@ -2,7 +2,7 @@ #define TIFALIBS_MATH_PFACTORS #include "../edh/discretization.hpp" -#include "../math/mul_mod_u.hpp" +#include "../math/mul_mod.hpp" #include "../rand/gen.hpp" #include "gcd.hpp" #include "is_prime.hpp" diff --git a/src/code/util/util.hpp b/src/code/util/util.hpp index 98c7daff3..447a22d50 100644 --- a/src/code/util/util.hpp +++ b/src/code/util/util.hpp @@ -93,6 +93,7 @@ inline const auto fn_is0 = [](auto x) { return x == 0; }; // std::sqrt(std::numeric_limits::epsilon()) template CEXP inline FP eps_v = FP(1e-8L); +using std::numbers::pi_v; namespace tifa_libs { using std::min, std::max, std::swap; diff --git a/src/data/csp/2019s/code1.ans b/src/data/csp/2019s/code1.ans new file mode 100644 index 000000000..b4de39476 --- /dev/null +++ b/src/data/csp/2019s/code1.ans @@ -0,0 +1 @@ +11 diff --git a/src/data/csp/2019s/code1.in b/src/data/csp/2019s/code1.in new file mode 100644 index 000000000..78454aabf --- /dev/null +++ b/src/data/csp/2019s/code1.in @@ -0,0 +1 @@ +2 2 diff --git a/src/data/csp/2019s/code10.ans b/src/data/csp/2019s/code10.ans new file mode 100644 index 000000000..62580c9a6 --- /dev/null +++ b/src/data/csp/2019s/code10.ans @@ -0,0 +1 @@ +0000000000 diff --git a/src/data/csp/2019s/code10.in b/src/data/csp/2019s/code10.in new file mode 100644 index 000000000..58d2fb649 --- /dev/null +++ b/src/data/csp/2019s/code10.in @@ -0,0 +1 @@ +10 0 diff --git a/src/data/csp/2019s/code11.ans b/src/data/csp/2019s/code11.ans new file mode 100644 index 000000000..8931fce4d --- /dev/null +++ b/src/data/csp/2019s/code11.ans @@ -0,0 +1 @@ +00000000000000010001001101100000 diff --git a/src/data/csp/2019s/code11.in b/src/data/csp/2019s/code11.in new file mode 100644 index 000000000..521a7aa9d --- /dev/null +++ b/src/data/csp/2019s/code11.in @@ -0,0 +1 @@ +32 123456 diff --git a/src/data/csp/2019s/code12.ans b/src/data/csp/2019s/code12.ans new file mode 100644 index 000000000..218aa697a --- /dev/null +++ b/src/data/csp/2019s/code12.ans @@ -0,0 +1 @@ +000000000000000000000000000000000000000000100011010100111100100 diff --git a/src/data/csp/2019s/code12.in b/src/data/csp/2019s/code12.in new file mode 100644 index 000000000..d0f47683f --- /dev/null +++ b/src/data/csp/2019s/code12.in @@ -0,0 +1 @@ +63 2019000 diff --git a/src/data/csp/2019s/code13.ans b/src/data/csp/2019s/code13.ans new file mode 100644 index 000000000..4b79a1713 --- /dev/null +++ b/src/data/csp/2019s/code13.ans @@ -0,0 +1 @@ +00000000000000001011111000101001 diff --git a/src/data/csp/2019s/code13.in b/src/data/csp/2019s/code13.in new file mode 100644 index 000000000..593738782 --- /dev/null +++ b/src/data/csp/2019s/code13.in @@ -0,0 +1 @@ +32 54321 diff --git a/src/data/csp/2019s/code14.ans b/src/data/csp/2019s/code14.ans new file mode 100644 index 000000000..3c94645f6 --- /dev/null +++ b/src/data/csp/2019s/code14.ans @@ -0,0 +1 @@ +000000000000000000000000000000000000000010110001001011000100 diff --git a/src/data/csp/2019s/code14.in b/src/data/csp/2019s/code14.in new file mode 100644 index 000000000..906b6145c --- /dev/null +++ b/src/data/csp/2019s/code14.in @@ -0,0 +1 @@ +60 910200 diff --git a/src/data/csp/2019s/code15.ans b/src/data/csp/2019s/code15.ans new file mode 100644 index 000000000..dc7c7c1a8 --- /dev/null +++ b/src/data/csp/2019s/code15.ans @@ -0,0 +1 @@ +000000000000000000000000000000000000000000000010001000101100101 diff --git a/src/data/csp/2019s/code15.in b/src/data/csp/2019s/code15.in new file mode 100644 index 000000000..03e4c1222 --- /dev/null +++ b/src/data/csp/2019s/code15.in @@ -0,0 +1 @@ +63 123321 diff --git a/src/data/csp/2019s/code16.ans b/src/data/csp/2019s/code16.ans new file mode 100644 index 000000000..eecb571de --- /dev/null +++ b/src/data/csp/2019s/code16.ans @@ -0,0 +1 @@ +000000000000000000000000000000000000000011010100110111011100000 diff --git a/src/data/csp/2019s/code16.in b/src/data/csp/2019s/code16.in new file mode 100644 index 000000000..5011b4a96 --- /dev/null +++ b/src/data/csp/2019s/code16.in @@ -0,0 +1 @@ +63 5000000 diff --git a/src/data/csp/2019s/code17.ans b/src/data/csp/2019s/code17.ans new file mode 100644 index 000000000..aee6b7e63 --- /dev/null +++ b/src/data/csp/2019s/code17.ans @@ -0,0 +1 @@ +000101100110111010001010000101011111000111111100001010101111010 diff --git a/src/data/csp/2019s/code17.in b/src/data/csp/2019s/code17.in new file mode 100644 index 000000000..4a35fff20 --- /dev/null +++ b/src/data/csp/2019s/code17.in @@ -0,0 +1 @@ +63 998244353353442899 diff --git a/src/data/csp/2019s/code18.ans b/src/data/csp/2019s/code18.ans new file mode 100644 index 000000000..d5a268adc --- /dev/null +++ b/src/data/csp/2019s/code18.ans @@ -0,0 +1 @@ +100000000000000000000000000000000000000000000000000000000000000 diff --git a/src/data/csp/2019s/code18.in b/src/data/csp/2019s/code18.in new file mode 100644 index 000000000..07f612fe7 --- /dev/null +++ b/src/data/csp/2019s/code18.in @@ -0,0 +1 @@ +63 9223372036854775807 diff --git a/src/data/csp/2019s/code19.ans b/src/data/csp/2019s/code19.ans new file mode 100644 index 000000000..30cc2db4a --- /dev/null +++ b/src/data/csp/2019s/code19.ans @@ -0,0 +1 @@ +01100000111110101011010011000110010010010010 diff --git a/src/data/csp/2019s/code19.in b/src/data/csp/2019s/code19.in new file mode 100644 index 000000000..11441ddfa --- /dev/null +++ b/src/data/csp/2019s/code19.in @@ -0,0 +1 @@ +44 4444444444444 diff --git a/src/data/csp/2019s/code2.ans b/src/data/csp/2019s/code2.ans new file mode 100644 index 000000000..9e8493eae --- /dev/null +++ b/src/data/csp/2019s/code2.ans @@ -0,0 +1 @@ +010 diff --git a/src/data/csp/2019s/code2.in b/src/data/csp/2019s/code2.in new file mode 100644 index 000000000..ac81dc6c5 --- /dev/null +++ b/src/data/csp/2019s/code2.in @@ -0,0 +1 @@ +3 3 diff --git a/src/data/csp/2019s/code20.ans b/src/data/csp/2019s/code20.ans new file mode 100644 index 000000000..fe4dffe6f --- /dev/null +++ b/src/data/csp/2019s/code20.ans @@ -0,0 +1 @@ +1000000000000000000000000000000000000000000000000000000000000000 diff --git a/src/data/csp/2019s/code20.in b/src/data/csp/2019s/code20.in new file mode 100644 index 000000000..b3c845132 --- /dev/null +++ b/src/data/csp/2019s/code20.in @@ -0,0 +1 @@ +64 18446744073709551615 diff --git a/src/data/csp/2019s/code3.ans b/src/data/csp/2019s/code3.ans new file mode 100644 index 000000000..5f2f16bff --- /dev/null +++ b/src/data/csp/2019s/code3.ans @@ -0,0 +1 @@ +1111 diff --git a/src/data/csp/2019s/code3.in b/src/data/csp/2019s/code3.in new file mode 100644 index 000000000..6af3f9438 --- /dev/null +++ b/src/data/csp/2019s/code3.in @@ -0,0 +1 @@ +4 10 diff --git a/src/data/csp/2019s/code4.ans b/src/data/csp/2019s/code4.ans new file mode 100644 index 000000000..79b8b1978 --- /dev/null +++ b/src/data/csp/2019s/code4.ans @@ -0,0 +1 @@ +01001 diff --git a/src/data/csp/2019s/code4.in b/src/data/csp/2019s/code4.in new file mode 100644 index 000000000..ed100ae2b --- /dev/null +++ b/src/data/csp/2019s/code4.in @@ -0,0 +1 @@ +5 14 diff --git a/src/data/csp/2019s/code5.ans b/src/data/csp/2019s/code5.ans new file mode 100644 index 000000000..5eadb0905 --- /dev/null +++ b/src/data/csp/2019s/code5.ans @@ -0,0 +1 @@ +110001 diff --git a/src/data/csp/2019s/code5.in b/src/data/csp/2019s/code5.in new file mode 100644 index 000000000..e5a8f926d --- /dev/null +++ b/src/data/csp/2019s/code5.in @@ -0,0 +1 @@ +6 33 diff --git a/src/data/csp/2019s/code6.ans b/src/data/csp/2019s/code6.ans new file mode 100644 index 000000000..2b6800fa5 --- /dev/null +++ b/src/data/csp/2019s/code6.ans @@ -0,0 +1 @@ +100010 diff --git a/src/data/csp/2019s/code6.in b/src/data/csp/2019s/code6.in new file mode 100644 index 000000000..6f56dd26a --- /dev/null +++ b/src/data/csp/2019s/code6.in @@ -0,0 +1 @@ +6 60 diff --git a/src/data/csp/2019s/code7.ans b/src/data/csp/2019s/code7.ans new file mode 100644 index 000000000..7ffdce22d --- /dev/null +++ b/src/data/csp/2019s/code7.ans @@ -0,0 +1 @@ +100001110 diff --git a/src/data/csp/2019s/code7.in b/src/data/csp/2019s/code7.in new file mode 100644 index 000000000..db257dbac --- /dev/null +++ b/src/data/csp/2019s/code7.in @@ -0,0 +1 @@ +9 500 diff --git a/src/data/csp/2019s/code8.ans b/src/data/csp/2019s/code8.ans new file mode 100644 index 000000000..372f0fd39 --- /dev/null +++ b/src/data/csp/2019s/code8.ans @@ -0,0 +1 @@ +1000011100 diff --git a/src/data/csp/2019s/code8.in b/src/data/csp/2019s/code8.in new file mode 100644 index 000000000..a27b581ee --- /dev/null +++ b/src/data/csp/2019s/code8.in @@ -0,0 +1 @@ +10 1000 diff --git a/src/data/csp/2019s/code9.ans b/src/data/csp/2019s/code9.ans new file mode 100644 index 000000000..770fdcfb4 --- /dev/null +++ b/src/data/csp/2019s/code9.ans @@ -0,0 +1 @@ +1000000000 diff --git a/src/data/csp/2019s/code9.in b/src/data/csp/2019s/code9.in new file mode 100644 index 000000000..ed4940a10 --- /dev/null +++ b/src/data/csp/2019s/code9.in @@ -0,0 +1 @@ +10 1023 diff --git a/src/doc_md/geo2d/any_ins_ss.md b/src/doc_md/geo2d/any_ins_ss.md new file mode 100644 index 000000000..2eb490dba --- /dev/null +++ b/src/doc_md/geo2d/any_ins_ss.md @@ -0,0 +1,4 @@ +--- +title: any_ins_ss +documentation_of: //src/code/geo2d/any_ins_ss.hpp +--- diff --git a/src/doc_md/geo2d/aunion_cs.md b/src/doc_md/geo2d/aunion_cs.md new file mode 100644 index 000000000..3d0e78130 --- /dev/null +++ b/src/doc_md/geo2d/aunion_cs.md @@ -0,0 +1,4 @@ +--- +title: aunion_cs +documentation_of: //src/code/geo2d/aunion_cs.hpp +--- diff --git a/src/doc_md/geo2d/aunion_pos.md b/src/doc_md/geo2d/aunion_pos.md new file mode 100644 index 000000000..ede4161cc --- /dev/null +++ b/src/doc_md/geo2d/aunion_pos.md @@ -0,0 +1,4 @@ +--- +title: aunion_pos +documentation_of: //src/code/geo2d/aunion_pos.hpp +--- diff --git a/src/doc_md/geo2d/coverage_rect_min_area.md b/src/doc_md/geo2d/coverage_rect_min_area.md new file mode 100644 index 000000000..2f32b2d54 --- /dev/null +++ b/src/doc_md/geo2d/coverage_rect_min_area.md @@ -0,0 +1,4 @@ +--- +title: coverage_rect_min_area +documentation_of: //src/code/geo2d/coverage_rect_min_area.hpp +--- diff --git a/src/doc_md/geo2d/coverage_rect_min_circum.md b/src/doc_md/geo2d/coverage_rect_min_circum.md new file mode 100644 index 000000000..73dd0ca52 --- /dev/null +++ b/src/doc_md/geo2d/coverage_rect_min_circum.md @@ -0,0 +1,4 @@ +--- +title: coverage_rect_min_circum +documentation_of: //src/code/geo2d/coverage_rect_min_circum.hpp +--- diff --git a/src/doc_md/geo2d/coverage_rect_with_min_area.md b/src/doc_md/geo2d/coverage_rect_with_min_area.md deleted file mode 100644 index 1c63b56da..000000000 --- a/src/doc_md/geo2d/coverage_rect_with_min_area.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: coverage_rect_with_min_area -documentation_of: //src/code/geo2d/coverage_rect_with_min_area.hpp ---- diff --git a/src/doc_md/geo2d/coverage_rect_with_min_circum.md b/src/doc_md/geo2d/coverage_rect_with_min_circum.md deleted file mode 100644 index 598d7464b..000000000 --- a/src/doc_md/geo2d/coverage_rect_with_min_circum.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: coverage_rect_with_min_circum -documentation_of: //src/code/geo2d/coverage_rect_with_min_circum.hpp ---- diff --git a/src/doc_md/geo2d/is_ins_sl.md b/src/doc_md/geo2d/is_ins_sl.md new file mode 100644 index 000000000..c06637748 --- /dev/null +++ b/src/doc_md/geo2d/is_ins_sl.md @@ -0,0 +1,4 @@ +--- +title: is_ins_sl +documentation_of: //src/code/geo2d/is_ins_sl.hpp +--- diff --git a/src/doc_md/geo2d/make_c_pcc_ex.md b/src/doc_md/geo2d/make_c_pcc_ex.md new file mode 100644 index 000000000..0b156a1d9 --- /dev/null +++ b/src/doc_md/geo2d/make_c_pcc_ex.md @@ -0,0 +1,4 @@ +--- +title: make_c_pcc_ex +documentation_of: //src/code/geo2d/make_c_pcc_ex.hpp +--- diff --git a/src/doc_md/math/mint_ds.md b/src/doc_md/math/mint_ds.md deleted file mode 100644 index 70b774ddd..000000000 --- a/src/doc_md/math/mint_ds.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: mint_ds -documentation_of: //src/code/math/mint_ds.hpp ---- diff --git a/src/doc_md/math/mint_ss.md b/src/doc_md/math/mint_ss.md deleted file mode 100644 index cdee90c27..000000000 --- a/src/doc_md/math/mint_ss.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: mint_ss -documentation_of: //src/code/math/mint_ss.hpp ---- diff --git a/src/doc_md/math/mul_mod.md b/src/doc_md/math/mul_mod.md new file mode 100644 index 000000000..9ee547cee --- /dev/null +++ b/src/doc_md/math/mul_mod.md @@ -0,0 +1,4 @@ +--- +title: mul_mod +documentation_of: //src/code/math/mul_mod.hpp +--- diff --git a/src/doc_md/math/mul_mod_s.md b/src/doc_md/math/mul_mod_s.md deleted file mode 100644 index ae9cf4b68..000000000 --- a/src/doc_md/math/mul_mod_s.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: mul_mod_s -documentation_of: //src/code/math/mul_mod_s.hpp ---- diff --git a/src/doc_md/math/mul_mod_u.md b/src/doc_md/math/mul_mod_u.md deleted file mode 100644 index 5fe43df13..000000000 --- a/src/doc_md/math/mul_mod_u.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: mul_mod_u -documentation_of: //src/code/math/mul_mod_u.hpp ---- diff --git a/src/doc_tex/ds/trie01.tex b/src/doc_tex/ds/trie01.tex index 0b21c47d5..0b9f956c1 100644 --- a/src/doc_tex/ds/trie01.tex +++ b/src/doc_tex/ds/trie01.tex @@ -1,9 +1,9 @@ 支持可持久化 -\verb|void add(u64 bit, T val, int idx, u64 xor_val)|: 先将当前 Trie 树包含的所有路径临时异或 \verb|xor_val|, 之后将 \verb|bit| 对应路径上的所有点的权值均加 \verb|val|. 先将当前 Trie 树包含的所有路径临时异或 \verb|xor_val|, 之后若 \verb|idx| 不为 \(-1\) 则在所有匹配结点的 \verb|idxs| 里加入 \verb|idx|. +\verb|add(bit, val, idx, xor_val)|: 先将当前 Trie 树包含的所有路径临时异或 \verb|xor_val|, 之后将 \verb|bit| 对应路径上的所有点的权值均加 \verb|val|. 先将当前 Trie 树包含的所有路径临时异或 \verb|xor_val|, 之后若 \verb|idx| 不为 \(-1\) 则在所有匹配结点的 \verb|idxs| 里加入 \verb|idx|. -\verb|u32 find(u64 bit, u64 xor_val)|: 先将当前 Trie 树包含的所有路径临时异或 \verb|xor_val|, 之后返回 \verb|bit| 的匹配结点编号, 未找到则返回 \(0\). +\verb|find(bit, xor_val)|: 先将当前 Trie 树包含的所有路径临时异或 \verb|xor_val|, 之后返回 \verb|bit| 的匹配结点编号, 未找到则返回 \(0\). -\verb|std::pair kth_element(T k, u64 xor_val)|: 先将当前 Trie 树包含的所有路径临时异或 \verb|xor_val|, 之后返回所有结点中第 \(k\) 小 (最小: \verb|0|; 最大: \verb|data[root].val - 1|) 的路径与编号. +\verb|kth_element(k, xor_val)|: 先将当前 Trie 树包含的所有路径临时异或 \verb|xor_val|, 之后返回所有结点中第 \(k\) 小 (最小: \verb|0|; 最大: \verb|data[root].val - 1|) 的路径与编号. -\verb|T count_less(u64 bit, u64 xor_val)|: 先将当前 Trie 树包含的所有路径临时异或 \verb|xor_val|, 之后返回小于 \verb|bit| 的路径构成子树的结点点权和. +\verb|count_less(bit, xor_val)|: 先将当前 Trie 树包含的所有路径临时异或 \verb|xor_val|, 之后返回小于 \verb|bit| 的路径构成子树的结点点权和. diff --git a/src/doc_tex/geo2d/any_ins_ss.tex b/src/doc_tex/geo2d/any_ins_ss.tex new file mode 100644 index 000000000..b462d8dbc --- /dev/null +++ b/src/doc_tex/geo2d/any_ins_ss.tex @@ -0,0 +1 @@ +\paragraph{复杂度} \(O(n\log n)\) \ No newline at end of file diff --git a/src/doc_tex/geo2d/aunion_cs.tex b/src/doc_tex/geo2d/aunion_cs.tex new file mode 100644 index 000000000..9972554d4 --- /dev/null +++ b/src/doc_tex/geo2d/aunion_cs.tex @@ -0,0 +1 @@ +\paragraph{复杂度} \(O(n^2\log n)\) \ No newline at end of file diff --git a/src/doc_tex/geo2d/aunion_pos.tex b/src/doc_tex/geo2d/aunion_pos.tex new file mode 100644 index 000000000..9972554d4 --- /dev/null +++ b/src/doc_tex/geo2d/aunion_pos.tex @@ -0,0 +1 @@ +\paragraph{复杂度} \(O(n^2\log n)\) \ No newline at end of file diff --git a/src/doc_tex/geo2d/coverage_rect_with_min_area.tex b/src/doc_tex/geo2d/coverage_rect_min_area.tex similarity index 100% rename from src/doc_tex/geo2d/coverage_rect_with_min_area.tex rename to src/doc_tex/geo2d/coverage_rect_min_area.tex diff --git a/src/doc_tex/geo2d/coverage_rect_with_min_circum.tex b/src/doc_tex/geo2d/coverage_rect_min_circum.tex similarity index 100% rename from src/doc_tex/geo2d/coverage_rect_with_min_circum.tex rename to src/doc_tex/geo2d/coverage_rect_min_circum.tex diff --git a/src/doc_tex/math/mint_ds.tex b/src/doc_tex/geo2d/is_ins_sl.tex similarity index 100% rename from src/doc_tex/math/mint_ds.tex rename to src/doc_tex/geo2d/is_ins_sl.tex diff --git a/src/doc_tex/math/mint_ss.tex b/src/doc_tex/geo2d/make_c_pcc_ex.tex similarity index 100% rename from src/doc_tex/math/mint_ss.tex rename to src/doc_tex/geo2d/make_c_pcc_ex.tex diff --git a/src/doc_tex/graph/alistrw.tex b/src/doc_tex/graph/alistrw.tex index 74748a72f..e69de29bb 100644 --- a/src/doc_tex/graph/alistrw.tex +++ b/src/doc_tex/graph/alistrw.tex @@ -1 +0,0 @@ -对给定的带边权图建反图, 反图的边权为原图边权的相反数 diff --git a/src/doc_tex/graph/chordal.tex b/src/doc_tex/graph/chordal.tex index 53d3a9a1a..fb5bf9ff8 100644 --- a/src/doc_tex/graph/chordal.tex +++ b/src/doc_tex/graph/chordal.tex @@ -17,7 +17,7 @@ \item \textbf{完美消除序列(PEO)}: 令 \(n=|V|\), 完美消除序列 \(v_1,\dots,v_n\) 为 \(1,\dots,n\) 的一个排列, 满足 \(v_i\) 在 \(\{v_i,\dots,v_n\}\) 的导出子图中为单纯点 \end{itemize} -\begin{figure} +\begin{figure}[h] \label{img:c5-with-2-chords} \centering \includesvg[width=0.4\textwidth]{img/Chordal-graph} @@ -51,7 +51,7 @@ \item 若 \(X_k\) 在 \(X_i\) 到 \(X_j\) 的路径上, 则 \(X_{i}\cap X_{j}\subseteq X_{k}\). \end{enumerate} -\begin{figure} +\begin{figure}[h] \label{img:tree-decomposition} \centering \includesvg[width=0.4\textwidth]{img/Tree_decomposition} diff --git a/src/doc_tex/graph/dijkstra.tex b/src/doc_tex/graph/dijkstra.tex index 89e1cf367..417c47049 100644 --- a/src/doc_tex/graph/dijkstra.tex +++ b/src/doc_tex/graph/dijkstra.tex @@ -4,7 +4,7 @@ \verb|s|: 起点 -\verb|cb_relax|: 当 \verb|dis[now] + w < dis[to]| 时执行的函数, 需要接收两个参数 \verb|size_t now|, \verb|size_t to| +\verb|cb_relax|: 当 \verb|dis[now] + w < dis[to]| 时执行的函数, 需要接收两个参数 \verb|now, to| \paragraph{复杂度} diff --git a/src/doc_tex/graph/gomory_hu.tex b/src/doc_tex/graph/gomory_hu.tex index 99e4a51a1..d9ba1a329 100644 --- a/src/doc_tex/graph/gomory_hu.tex +++ b/src/doc_tex/graph/gomory_hu.tex @@ -2,14 +2,14 @@ \paragraph{示例} \cite{enwiki:1187705852} -\begin{figure} +\begin{figure}[h] \label{img:gomory-hu-input} \centering \includesvg[width=0.7\textwidth]{img/GomoryHu_G} \caption{原图} \end{figure} -\begin{figure} +\begin{figure}[h] \label{img:gomory-hu-output} \centering \includesvg[width=0.7\textwidth]{img/GomoryHu_T} diff --git a/src/doc_tex/math/mul_mod_s.tex b/src/doc_tex/math/mul_mod.tex similarity index 100% rename from src/doc_tex/math/mul_mod_s.tex rename to src/doc_tex/math/mul_mod.tex diff --git a/src/doc_tex/math/nim_prod.tex b/src/doc_tex/math/nim_prod.tex index 27e9ab658..959d3c75b 100644 --- a/src/doc_tex/math/nim_prod.tex +++ b/src/doc_tex/math/nim_prod.tex @@ -2,27 +2,27 @@ Nim 积: \(a\otimes b:=\operatorname{mex}\{(a'\otimes b)\oplus(a\oplus b')\oplus(a'\otimes b'):a' +From \url{https://github.com/lemire/Code-used-on-Daniel-Lemire-s-blog/blob/8ee2caf6ae1b2c915933811ebe58762a0a9c25df/2024/04/13/module/gcd.h} -\paragraph{参考文献} \cite{menezes2018handbook} +\paragraph{参考文献} \cite{menezes2018handbook} \ No newline at end of file diff --git a/src/doc_tex/nt/gcd.tex b/src/doc_tex/nt/gcd.tex index 190e56663..34aa48352 100644 --- a/src/doc_tex/nt/gcd.tex +++ b/src/doc_tex/nt/gcd.tex @@ -1 +1 @@ -From +From \url{https://github.com/lemire/Code-used-on-Daniel-Lemire-s-blog/blob/8ee2caf6ae1b2c915933811ebe58762a0a9c25df/2024/04/13/module/gcd.h} \ No newline at end of file diff --git a/src/doc_tex/str/kmp.tex b/src/doc_tex/str/kmp.tex index 930c7f69e..d645707e9 100644 --- a/src/doc_tex/str/kmp.tex +++ b/src/doc_tex/str/kmp.tex @@ -11,5 +11,5 @@ \begin{itemize} \item Boyer--Moore 算法的时间复杂度\(\Theta(m)\) 预处理 + (最差 \(O(nm)\), 最好 \(\Omega(n/m)\)) 匹配, \cite{enwiki:1185721721} - \item Boyer--Moore--Horspool 算法的时间复杂度最差为 \(O(nm)\), 平均为 \(Theta(n)\). \cite{enwiki:1136480391} + \item Boyer--Moore--Horspool 算法的时间复杂度最差为 \(O(nm)\), 平均为 \(\Theta(n)\). \cite{enwiki:1136480391} \end{itemize} diff --git a/src/doc_tex/str/lyndon.tex b/src/doc_tex/str/lyndon.tex index f42583f81..734c0d254 100644 --- a/src/doc_tex/str/lyndon.tex +++ b/src/doc_tex/str/lyndon.tex @@ -18,13 +18,13 @@ 当且仅当 \(s\) 的字典序严格小于它的所有非平凡 (非空且不同于自身) 循环同构串时, \(s\) 才是 Lyndon 串 -Lyndon 分解: 串 \(s\) 的 Lyndon 分解记为 \(s=w_1w_2\cdots w_k\), 其中所有 \(w_i\) 为简单串, 并且他们的字典序按照非严格单减排序, 即 \(w_1\ge w_2\ge\cdots\ge w_k\). 可以发现, 这样的分解存在且唯一 +Lyndon 分解: 串 \(s\) 的 Lyndon 分解记为 \(s=w_1w_2\cdots w_k\), 其中所有 \(w_i\) 为简单串, 且其字典序按非严格单减排序, 即 \(w_1\ge w_2\ge\cdots\ge w_k\). 可以发现, 这样的分解存在且唯一 对于长度为 \(n\) 的串 \(s\), 我们可以通过 Lyndon 分解寻找该串的最小表示法 我们构建串 \(ss\) 的 Lyndon 分解, 然后寻找这个分解中的一个 Lyndon 串 \(t\), 使得它的起点小于 \(n\) 且终点大于等于 \(n\) -可以很容易地使用 Lyndon 分解的性质证明, 子串 \(t\) 的首字符就是 \(s\) 的最小表示法的首字符, 即我们沿着 \(t\) 的开头往后 \(n\) 个字符组成的串就是 \(s\) 的最小表示法 +可以用 Lyndon 分解的性质证明: 子串 \(t\) 的首字符就是 \(s\) 的最小表示法的首字符, 即沿着 \(t\) 的开头往后 \(n\) 个字符组成的串就是 \(s\) 的最小表示法 于是我们在分解的过程中记录每一次的近似 Lyndon 串的开头即可 diff --git a/src/meta_test/library-checker-math/binomial_coefficient_prime_mod.cppmeta b/src/meta_test/library-checker-math/binomial_coefficient_prime_mod.cppmeta index aa3f04a1f..e31f28e8c 100644 --- a/src/meta_test/library-checker-math/binomial_coefficient_prime_mod.cppmeta +++ b/src/meta_test/library-checker-math/binomial_coefficient_prime_mod.cppmeta @@ -9,20 +9,12 @@ using mint = tifa_libs::math::mint_d31<-1>; #endif -#ifdef GENTC_ds -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -#endif int main() { u32 t, MOD; tifa_libs::fin >> t >> MOD; #ifdef GENTC_d31 mint::set_mod(MOD); -#endif -#ifdef GENTC_ds - mint::set_mod(MOD); #endif if (MOD < 1e7) { tifa_libs::math::Lucas mCn; diff --git a/src/meta_test/library-checker-math/convolution_mod.cppmeta b/src/meta_test/library-checker-math/convolution_mod.cppmeta index 6a4d0a43f..fca3b0593 100644 --- a/src/meta_test/library-checker-math/convolution_mod.cppmeta +++ b/src/meta_test/library-checker-math/convolution_mod.cppmeta @@ -20,16 +20,10 @@ int main() { #ifdef GENTC_czt_p3ntt_s30_s63 tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; #endif -#ifdef GENTC_czt_p3ntt_s30_ss +#ifdef GENTC_czt_p3ntt_s63_s30 tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; #endif -#ifdef GENTC_czt_p3ntt_ss_s30 - tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; -#endif -#ifdef GENTC_czt_p3ntt_ss_s63 - tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; -#endif -#ifdef GENTC_czt_p3ntt_ss_ss +#ifdef GENTC_czt_p3ntt_s63_s63 tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; #endif #ifdef GENTC_czt_pntt_s30 @@ -38,25 +32,16 @@ int main() { #ifdef GENTC_czt_pntt_s63 tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; #endif -#ifdef GENTC_czt_pntt_ss - tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; -#endif #ifdef GENTC_czt_p3ntt_s30_d31 tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; #endif #ifdef GENTC_czt_p3ntt_s30_d63 tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; #endif -#ifdef GENTC_czt_p3ntt_s30_ds - tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; -#endif -#ifdef GENTC_czt_p3ntt_ss_d31 +#ifdef GENTC_czt_p3ntt_s63_d31 tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; #endif -#ifdef GENTC_czt_p3ntt_ss_d63 - tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; -#endif -#ifdef GENTC_czt_p3ntt_ss_ds +#ifdef GENTC_czt_p3ntt_s63_d63 tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; #endif #ifdef GENTC_czt_pmtt_d31 @@ -65,9 +50,6 @@ int main() { #ifdef GENTC_czt_pmtt_d63 tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; #endif -#ifdef GENTC_czt_pmtt_ds - tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; -#endif #ifdef GENTC_ntt_s30 ntt_t ntt; tifa_libs::fout << tifa_libs::math::conv_dft(ntt, a, b) << '\n'; @@ -75,10 +57,6 @@ int main() { #ifdef GENTC_ntt_s63 ntt_t ntt; tifa_libs::fout << tifa_libs::math::conv_dft(ntt, a, b) << '\n'; -#endif -#ifdef GENTC_ntt_ss - ntt_t ntt; - tifa_libs::fout << tifa_libs::math::conv_dft(ntt, a, b) << '\n'; #endif return 0; } diff --git a/src/meta_test/library-checker-math/convolution_mod_1000000007.cppmeta b/src/meta_test/library-checker-math/convolution_mod_1000000007.cppmeta index 3c0297aa7..2986bd5ed 100644 --- a/src/meta_test/library-checker-math/convolution_mod_1000000007.cppmeta +++ b/src/meta_test/library-checker-math/convolution_mod_1000000007.cppmeta @@ -18,7 +18,7 @@ int main() { #ifdef GENTC_3nttu64_s30 vecu64 a(n), b(m); #endif -#ifdef GENTC_3nttu64_ss +#ifdef GENTC_3nttu64_s63 vecu64 a(n), b(m); #endif #ifdef GENTC_3ntt_s30_s30 @@ -27,16 +27,10 @@ int main() { #ifdef GENTC_3ntt_s30_s63 vec a(n), b(m); #endif -#ifdef GENTC_3ntt_s30_ss +#ifdef GENTC_3ntt_s63_s30 vec a(n), b(m); #endif -#ifdef GENTC_3ntt_ss_s30 - vec a(n), b(m); -#endif -#ifdef GENTC_3ntt_ss_s63 - vec a(n), b(m); -#endif -#ifdef GENTC_3ntt_ss_ss +#ifdef GENTC_3ntt_s63_s63 vec a(n), b(m); #endif #ifdef GENTC_3ntt_s30_d31 @@ -45,16 +39,10 @@ int main() { #ifdef GENTC_3ntt_s30_d63 vec a(n), b(m); #endif -#ifdef GENTC_3ntt_s30_ds - vec a(n), b(m); -#endif -#ifdef GENTC_3ntt_ss_d31 - vec a(n), b(m); -#endif -#ifdef GENTC_3ntt_ss_d63 +#ifdef GENTC_3ntt_s63_d31 vec a(n), b(m); #endif -#ifdef GENTC_3ntt_ss_ds +#ifdef GENTC_3ntt_s63_d63 vec a(n), b(m); #endif #ifdef GENTC_mtt_s30 @@ -63,24 +51,18 @@ int main() { #ifdef GENTC_mtt_s63 vec a(n), b(m); #endif -#ifdef GENTC_mtt_ss - vec a(n), b(m); -#endif #ifdef GENTC_mtt_d31 vec a(n), b(m); #endif #ifdef GENTC_mtt_d63 vec a(n), b(m); -#endif -#ifdef GENTC_mtt_ds - vec a(n), b(m); #endif tifa_libs::fin >> a >> b; #ifdef GENTC_3nttu64_s30 ntt3_t ntt3; tifa_libs::fout << tifa_libs::math::conv_3ntt_u64(ntt3, a, b, MOD) << '\n'; #endif -#ifdef GENTC_3nttu64_ss +#ifdef GENTC_3nttu64_s63 ntt3_t ntt3; tifa_libs::fout << tifa_libs::math::conv_3ntt_u64(ntt3, a, b, MOD) << '\n'; #endif @@ -92,19 +74,11 @@ int main() { ntt3_t ntt3; tifa_libs::fout << tifa_libs::math::conv_3ntt(ntt3, a, b) << '\n'; #endif -#ifdef GENTC_3ntt_s30_ss - ntt3_t ntt3; - tifa_libs::fout << tifa_libs::math::conv_3ntt(ntt3, a, b) << '\n'; -#endif -#ifdef GENTC_3ntt_ss_s30 +#ifdef GENTC_3ntt_s63_s30 ntt3_t ntt3; tifa_libs::fout << tifa_libs::math::conv_3ntt(ntt3, a, b) << '\n'; #endif -#ifdef GENTC_3ntt_ss_s63 - ntt3_t ntt3; - tifa_libs::fout << tifa_libs::math::conv_3ntt(ntt3, a, b) << '\n'; -#endif -#ifdef GENTC_3ntt_ss_ss +#ifdef GENTC_3ntt_s63_s63 ntt3_t ntt3; tifa_libs::fout << tifa_libs::math::conv_3ntt(ntt3, a, b) << '\n'; #endif @@ -116,19 +90,11 @@ int main() { ntt3_t ntt3; tifa_libs::fout << tifa_libs::math::conv_3ntt(ntt3, a, b) << '\n'; #endif -#ifdef GENTC_3ntt_s30_ds - ntt3_t ntt3; - tifa_libs::fout << tifa_libs::math::conv_3ntt(ntt3, a, b) << '\n'; -#endif -#ifdef GENTC_3ntt_ss_d31 +#ifdef GENTC_3ntt_s63_d31 ntt3_t ntt3; tifa_libs::fout << tifa_libs::math::conv_3ntt(ntt3, a, b) << '\n'; #endif -#ifdef GENTC_3ntt_ss_d63 - ntt3_t ntt3; - tifa_libs::fout << tifa_libs::math::conv_3ntt(ntt3, a, b) << '\n'; -#endif -#ifdef GENTC_3ntt_ss_ds +#ifdef GENTC_3ntt_s63_d63 ntt3_t ntt3; tifa_libs::fout << tifa_libs::math::conv_3ntt(ntt3, a, b) << '\n'; #endif @@ -140,10 +106,6 @@ int main() { tifa_libs::math::FFT fft; tifa_libs::fout << tifa_libs::math::conv_mtt(fft, a, b) << '\n'; #endif -#ifdef GENTC_mtt_ss - tifa_libs::math::FFT fft; - tifa_libs::fout << tifa_libs::math::conv_mtt(fft, a, b) << '\n'; -#endif #ifdef GENTC_mtt_d31 tifa_libs::math::FFT fft; tifa_libs::fout << tifa_libs::math::conv_mtt(fft, a, b) << '\n'; @@ -151,10 +113,6 @@ int main() { #ifdef GENTC_mtt_d63 tifa_libs::math::FFT fft; tifa_libs::fout << tifa_libs::math::conv_mtt(fft, a, b) << '\n'; -#endif -#ifdef GENTC_mtt_ds - tifa_libs::math::FFT fft; - tifa_libs::fout << tifa_libs::math::conv_mtt(fft, a, b) << '\n'; #endif return 0; } diff --git a/src/meta_test/library-checker-math/matrix_det_arbitrary_mod.cppmeta b/src/meta_test/library-checker-math/matrix_det_arbitrary_mod.cppmeta index f621b56e8..3462abaed 100644 --- a/src/meta_test/library-checker-math/matrix_det_arbitrary_mod.cppmeta +++ b/src/meta_test/library-checker-math/matrix_det_arbitrary_mod.cppmeta @@ -9,11 +9,7 @@ using mint = tifa_libs::math::mint_d31<-1>; #endif -#ifdef GENTC_ds -#include "../../code/math/mint_ds.hpp" -using mint = tifa_libs::math::mint_ds<-1>; -#endif using mat = tifa_libs::math::matrix; int main() { @@ -23,9 +19,6 @@ int main() { std::cin >> n >> MOD; #ifdef GENTC_d31 mint::set_mod(MOD); -#endif -#ifdef GENTC_ds - mint::set_mod(MOD); #endif if (!n) { std::cout << "1\n"; diff --git a/src/meta_test/library-checker-math/stirling_number_of_the_first_kind_small_p_large_n.cppmeta b/src/meta_test/library-checker-math/stirling_number_of_the_first_kind_small_p_large_n.cppmeta index 1001aaef0..ace6ca1da 100644 --- a/src/meta_test/library-checker-math/stirling_number_of_the_first_kind_small_p_large_n.cppmeta +++ b/src/meta_test/library-checker-math/stirling_number_of_the_first_kind_small_p_large_n.cppmeta @@ -7,11 +7,6 @@ using mint = tifa_libs::math::mint_d31<-1>; #endif -#ifdef GENTC_ds -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -#endif int main() { std::ios::sync_with_stdio(false); @@ -20,9 +15,6 @@ int main() { std::cin >> t >> MOD; #ifdef GENTC_d31 mint::set_mod(MOD); -#endif -#ifdef GENTC_ds - mint::set_mod(MOD); #endif tifa_libs::math::Stirling1 s; while (t--) { diff --git a/src/meta_test/library-checker-math/stirling_number_of_the_second_kind_small_p_large_n.cppmeta b/src/meta_test/library-checker-math/stirling_number_of_the_second_kind_small_p_large_n.cppmeta index bf9162c0c..392b102d0 100644 --- a/src/meta_test/library-checker-math/stirling_number_of_the_second_kind_small_p_large_n.cppmeta +++ b/src/meta_test/library-checker-math/stirling_number_of_the_second_kind_small_p_large_n.cppmeta @@ -7,11 +7,6 @@ using mint = tifa_libs::math::mint_d31<-1>; #endif -#ifdef GENTC_ds -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -#endif int main() { std::ios::sync_with_stdio(false); @@ -20,9 +15,6 @@ int main() { std::cin >> t >> MOD; #ifdef GENTC_d31 mint::set_mod(MOD); -#endif -#ifdef GENTC_ds - mint::set_mod(MOD); #endif tifa_libs::math::Stirling2 S; while (t--) { diff --git a/src/test_cpverifier/aizu-cgl/cgl_4_a.test.cpp b/src/test_cpverifier/aizu-cgl/cgl_4_a.test.cpp index c09864d7b..a9491f335 100644 --- a/src/test_cpverifier/aizu-cgl/cgl_4_a.test.cpp +++ b/src/test_cpverifier/aizu-cgl/cgl_4_a.test.cpp @@ -13,11 +13,11 @@ int main() { cvh p(n); std::cin >> p; p.template init(); - std::cout << p.vs.size() << '\n'; + std::cout << p.size() << '\n'; u32 now = 0; - for (u32 i = 1; i < p.vs.size(); ++i) + for (u32 i = 1; i < p.size(); ++i) if (tifa_libs::is_lt(p[i].y, p[now].y) || (tifa_libs::is_eq(p[i].y, p[now].y) && tifa_libs::is_lt(p[i].x, p[now].x))) now = i; - for (u32 i = now; i < p.vs.size(); ++i) std::cout << p[i] << '\n'; + for (u32 i = now; i < p.size(); ++i) std::cout << p[i] << '\n'; if (now) flt_ (u32, i, 0, now) std::cout << p[i] << '\n'; return 0; diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_a.ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_a.ds.test.cpp deleted file mode 100644 index 0e44f3f95..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_a.ds.test.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_A" - -#include "../../code/comb/ball_box_dda.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_dda(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_a.ss.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_a.ss.test.cpp deleted file mode 100644 index 2512c3001..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_a.ss.test.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_A" - -#include "../../code/comb/ball_box_dda.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_dda(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_b.ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_b.ds.test.cpp deleted file mode 100644 index 17ed43b51..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_b.ds.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_B" - -#include "../../code/comb/ball_box_ddm.hpp" -#include "../../code/comb/binom.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - tifa_libs::math::Binom binom(2001); - std::cout << tifa_libs::math::ball_box_ddm(n, k, binom) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_b.ss.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_b.ss.test.cpp deleted file mode 100644 index 9a5ae4f0f..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_b.ss.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_B" - -#include "../../code/comb/ball_box_ddm.hpp" -#include "../../code/comb/binom.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - tifa_libs::math::Binom binom(2001); - std::cout << tifa_libs::math::ball_box_ddm(n, k, binom) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_c.ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_c.ds.test.cpp deleted file mode 100644 index 7735dc2c8..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_c.ds.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_C" - -#include "../../code/comb/ball_box_ddl.hpp" -#include "../../code/comb/binom.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - tifa_libs::math::Binom binom(2001); - std::cout << tifa_libs::math::ball_box_ddl(n, k, binom) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_c.ss.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_c.ss.test.cpp deleted file mode 100644 index c2fae15a5..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_c.ss.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_C" - -#include "../../code/comb/ball_box_ddl.hpp" -#include "../../code/comb/binom.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - tifa_libs::math::Binom binom(2001); - std::cout << tifa_libs::math::ball_box_ddl(n, k, binom) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_d.ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_d.ds.test.cpp deleted file mode 100644 index de03aa08e..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_d.ds.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_D" - -#include "../../code/comb/ball_box_ida.hpp" -#include "../../code/comb/binom.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - tifa_libs::math::Binom binom(2001); - std::cout << tifa_libs::math::ball_box_ida(n, k, binom) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_d.ss.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_d.ss.test.cpp deleted file mode 100644 index 4920a9060..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_d.ss.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_D" - -#include "../../code/comb/ball_box_ida.hpp" -#include "../../code/comb/binom.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - tifa_libs::math::Binom binom(2001); - std::cout << tifa_libs::math::ball_box_ida(n, k, binom) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_e.ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_e.ds.test.cpp deleted file mode 100644 index 7d0d88766..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_e.ds.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_E" - -#include "../../code/comb/ball_box_idm.hpp" -#include "../../code/comb/binom.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - tifa_libs::math::Binom binom(2001); - std::cout << tifa_libs::math::ball_box_idm(n, k, binom) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_e.ss.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_e.ss.test.cpp deleted file mode 100644 index 2bcc019ff..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_e.ss.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_E" - -#include "../../code/comb/ball_box_idm.hpp" -#include "../../code/comb/binom.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - tifa_libs::math::Binom binom(2001); - std::cout << tifa_libs::math::ball_box_idm(n, k, binom) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_f.ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_f.ds.test.cpp deleted file mode 100644 index 82478dd71..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_f.ds.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_F" - -#include "../../code/comb/ball_box_idl.hpp" -#include "../../code/comb/binom.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - tifa_libs::math::Binom binom(2001); - std::cout << tifa_libs::math::ball_box_idl(n, k, binom) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_f.ss.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_f.ss.test.cpp deleted file mode 100644 index f6a9c7bf2..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_f.ss.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_F" - -#include "../../code/comb/ball_box_idl.hpp" -#include "../../code/comb/binom.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - tifa_libs::math::Binom binom(2001); - std::cout << tifa_libs::math::ball_box_idl(n, k, binom) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 071b631c6..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_G" - -#include "../../code/comb/ball_box_dia.hpp" -#include "../../code/comb/gen_bell.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - if (k >= n) std::cout << tifa_libs::math::gen_bell(n)[n] << '\n'; // unnecessary, just for test - else std::cout << tifa_libs::math::ball_box_dia(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-s63-d31.test.cpp similarity index 79% rename from src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-s63-d31.test.cpp index 99e451783..fb7fdb27f 100644 --- a/src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 1000000000 + 7; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-s63-d63.test.cpp similarity index 79% rename from src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-s63-d63.test.cpp index 44ccb99f8..6240c4852 100644 --- a/src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 1000000000 + 7; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 7cc81ac13..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_g.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_G" - -#include "../../code/comb/ball_box_dia.hpp" -#include "../../code/comb/gen_bell.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - if (k >= n) std::cout << tifa_libs::math::gen_bell(n)[n] << '\n'; // unnecessary, just for test - else std::cout << tifa_libs::math::ball_box_dia(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_g.pmtt-ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_g.pmtt-ds.test.cpp deleted file mode 100644 index 3a389b3e3..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_g.pmtt-ds.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_G" - -#include "../../code/comb/ball_box_dia.hpp" -#include "../../code/comb/gen_bell.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - if (k >= n) std::cout << tifa_libs::math::gen_bell(n)[n] << '\n'; // unnecessary, just for test - else std::cout << tifa_libs::math::ball_box_dia(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_h.ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_h.ds.test.cpp deleted file mode 100644 index 7d14bb3b2..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_h.ds.test.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_H" - -#include "../../code/comb/ball_box_dim.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_dim(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_h.ss.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_h.ss.test.cpp deleted file mode 100644 index 833f7c030..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_h.ss.test.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_H" - -#include "../../code/comb/ball_box_dim.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_dim(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 5771a5a5a..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_I" - -#include "../../code/comb/ball_box_dil.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_dil(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-s63-d31.test.cpp similarity index 75% rename from src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-s63-d31.test.cpp index 83eb3ece6..ae18778ff 100644 --- a/src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-s63-d31.test.cpp @@ -6,13 +6,13 @@ CEXP u32 MOD = 1000000000 + 7; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-s63-d63.test.cpp similarity index 75% rename from src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-s63-d63.test.cpp index 6f5b21f44..15406155d 100644 --- a/src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-s63-d63.test.cpp @@ -6,13 +6,13 @@ CEXP u32 MOD = 1000000000 + 7; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 7a21cfbd3..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_i.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_I" - -#include "../../code/comb/ball_box_dil.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_dil(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_i.pmtt-ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_i.pmtt-ds.test.cpp deleted file mode 100644 index baa49e872..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_i.pmtt-ds.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_I" - -#include "../../code/comb/ball_box_dil.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_dil(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 73092ace6..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_J" - -#include "../../code/comb/ball_box_iia.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_iia(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-s63-d31.test.cpp similarity index 75% rename from src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-s63-d31.test.cpp index 3699b185f..bed0fbedb 100644 --- a/src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-s63-d31.test.cpp @@ -6,13 +6,13 @@ CEXP u32 MOD = 1000000000 + 7; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-s63-d63.test.cpp similarity index 75% rename from src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-s63-d63.test.cpp index a13bd2ff5..e4a1c4d3e 100644 --- a/src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-s63-d63.test.cpp @@ -6,13 +6,13 @@ CEXP u32 MOD = 1000000000 + 7; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-ss-ds.test.cpp deleted file mode 100644 index c5c63d3ff..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_j.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_J" - -#include "../../code/comb/ball_box_iia.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_iia(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_j.pmtt-ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_j.pmtt-ds.test.cpp deleted file mode 100644 index 1242b44f2..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_j.pmtt-ds.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_J" - -#include "../../code/comb/ball_box_iia.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_iia(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_k.ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_k.ds.test.cpp deleted file mode 100644 index 975b17394..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_k.ds.test.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_K" - -#include "../../code/comb/ball_box_iim.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_iim(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_k.ss.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_k.ss.test.cpp deleted file mode 100644 index 1d0e7c6cd..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_k.ss.test.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_K" - -#include "../../code/comb/ball_box_iim.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_iim(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 9e0e94eaf..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_L" - -#include "../../code/comb/ball_box_iil.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_iil(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-s63-d31.test.cpp similarity index 75% rename from src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-s63-d31.test.cpp index c826f556e..8b08c6634 100644 --- a/src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-s63-d31.test.cpp @@ -6,13 +6,13 @@ CEXP u32 MOD = 1000000000 + 7; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-s63-d63.test.cpp similarity index 75% rename from src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-s63-d63.test.cpp index f35e814b0..9baf0a489 100644 --- a/src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-s63-d63.test.cpp @@ -6,13 +6,13 @@ CEXP u32 MOD = 1000000000 + 7; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 6e98cea13..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_l.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_L" - -#include "../../code/comb/ball_box_iil.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_iil(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-dpl/dpl_5_l.pmtt-ds.test.cpp b/src/test_cpverifier/aizu-dpl/dpl_5_l.pmtt-ds.test.cpp deleted file mode 100644 index 2618b0a5f..000000000 --- a/src/test_cpverifier/aizu-dpl/dpl_5_l.pmtt-ds.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/all/DPL_5_L" - -#include "../../code/comb/ball_box_iil.hpp" - -CEXP u32 MOD = 1000000000 + 7; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, k; - std::cin >> n >> k; - std::cout << tifa_libs::math::ball_box_iil(n, k) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-ntl/ntl_1_b.ds.test.cpp b/src/test_cpverifier/aizu-ntl/ntl_1_b.ds.test.cpp deleted file mode 100644 index 9de3a0ebc..000000000 --- a/src/test_cpverifier/aizu-ntl/ntl_1_b.ds.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/6/NTL/all/NTL_1_B" - -#include "../../code/math/qpow.hpp" - -CEXP u64 MOD = 1'000'000'007; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - mint m; - u64 n; - std::cin >> m >> n; - std::cout << tifa_libs::math::qpow(m, n).val() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/aizu-ntl/ntl_1_b.ss.test.cpp b/src/test_cpverifier/aizu-ntl/ntl_1_b.ss.test.cpp deleted file mode 100644 index c7fc6b767..000000000 --- a/src/test_cpverifier/aizu-ntl/ntl_1_b.ss.test.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/6/NTL/all/NTL_1_B" - -#include "../../code/math/qpow.hpp" - -CEXP u64 MOD = 1'000'000'007; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - mint m; - u64 n; - std::cin >> m >> n; - std::cout << tifa_libs::math::qpow(m, n).val() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-datastructure/point_set_range_composite.ds.test.cpp b/src/test_cpverifier/library-checker-datastructure/point_set_range_composite.ds.test.cpp deleted file mode 100644 index 4e396df39..000000000 --- a/src/test_cpverifier/library-checker-datastructure/point_set_range_composite.ds.test.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/point_set_range_composite" - -#include "../../code/ds/segtree.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using Ty = mint; -using T = std::pair; -using F = T; - -auto op(T a, T b) { // b(a(x)) - tifa_libs::swap(a, b); - return T{a.first * b.first, a.first * b.second + a.second}; -} -auto e() { return T{1, 0}; } -auto id() { return e(); } -auto mapping(T a, F f) { return op(f, a); } -auto composition(F, F) { return F(1, 0); } - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, q; - std::cin >> n >> q; - vec a(n); - for (auto& x : a) std::cin >> x.first >> x.second; - tifa_libs::ds::segtree seg(a); - for (u32 i = 0, opt; i < q; ++i) { - std::cin >> opt; - if (opt == 0) { - u32 x; - Ty y, z; - std::cin >> x >> y >> z; - seg.set(x, T{y, z}); - } else { - u32 x, y; - Ty z; - std::cin >> x >> y >> z; - auto ret = seg.query(x, y); - std::cout << ret.first * z + ret.second << '\n'; - } - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-datastructure/point_set_range_composite.ss.test.cpp b/src/test_cpverifier/library-checker-datastructure/point_set_range_composite.ss.test.cpp deleted file mode 100644 index f9af2c2d2..000000000 --- a/src/test_cpverifier/library-checker-datastructure/point_set_range_composite.ss.test.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/point_set_range_composite" - -#include "../../code/ds/segtree.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using Ty = mint; -using T = std::pair; -using F = T; - -auto op(T a, T b) { // b(a(x)) - tifa_libs::swap(a, b); - return T{a.first * b.first, a.first * b.second + a.second}; -} -auto e() { return T{1, 0}; } -auto id() { return e(); } -auto mapping(T a, F f) { return op(f, a); } -auto composition(F, F) { return F(1, 0); } - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, q; - std::cin >> n >> q; - vec a(n); - for (auto& x : a) std::cin >> x.first >> x.second; - tifa_libs::ds::segtree seg(a); - for (u32 i = 0, opt; i < q; ++i) { - std::cin >> opt; - if (opt == 0) { - u32 x; - Ty y, z; - std::cin >> x >> y >> z; - seg.set(x, T{y, z}); - } else { - u32 x, y; - Ty z; - std::cin >> x >> y >> z; - auto ret = seg.query(x, y); - std::cout << ret.first * z + ret.second << '\n'; - } - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-datastructure/range_affine_point_get.ds.test.cpp b/src/test_cpverifier/library-checker-datastructure/range_affine_point_get.ds.test.cpp deleted file mode 100644 index 80fa4e673..000000000 --- a/src/test_cpverifier/library-checker-datastructure/range_affine_point_get.ds.test.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/range_affine_point_get" - -#include "../../code/ds/segtree.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using T = std::pair; // sum len -using F = std::pair; // mul add - -auto op(T a, T b) { return T{a.first + b.first, a.second + b.second}; } -auto e() { return T{0, 0}; } -auto mapping(T a, F f) { - return T{f.first * a.first + f.second * a.second, a.second}; -} -auto composition(F f, F g) { - return F{f.first * g.first, g.first * f.second + g.second}; - // g(x) = g.mul * x + g.add - // f(g(x)) = f.mul * (g.mul * x + g.add) + f.add = f.mul * g.mul * x + f.mul * g.add + f.add -} -auto id() { return F{1, 0}; } - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, q; - std::cin >> n >> q; - vec a(n); - for (auto &x : a) std::cin >> x.first, x.second = 1; - tifa_libs::ds::segtree segt(a); - fle_ (u32, i, 1, q) { - u32 opt, l, r; - std::cin >> opt >> l; - if (opt == 0) { - mint x, y; - std::cin >> r >> x >> y; - segt.update(l, r, F{x, y}); - } else - std::cout << segt.query(l).first << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-datastructure/range_affine_point_get.ss.test.cpp b/src/test_cpverifier/library-checker-datastructure/range_affine_point_get.ss.test.cpp deleted file mode 100644 index e7bbe62d9..000000000 --- a/src/test_cpverifier/library-checker-datastructure/range_affine_point_get.ss.test.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/range_affine_point_get" - -#include "../../code/ds/segtree.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using T = std::pair; // sum len -using F = std::pair; // mul add - -auto op(T a, T b) { return T{a.first + b.first, a.second + b.second}; } -auto e() { return T{0, 0}; } -auto mapping(T a, F f) { - return T{f.first * a.first + f.second * a.second, a.second}; -} -auto composition(F f, F g) { - return F{f.first * g.first, g.first * f.second + g.second}; - // g(x) = g.mul * x + g.add - // f(g(x)) = f.mul * (g.mul * x + g.add) + f.add = f.mul * g.mul * x + f.mul * g.add + f.add -} -auto id() { return F{1, 0}; } - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, q; - std::cin >> n >> q; - vec a(n); - for (auto &x : a) std::cin >> x.first, x.second = 1; - tifa_libs::ds::segtree segt(a); - fle_ (u32, i, 1, q) { - u32 opt, l, r; - std::cin >> opt >> l; - if (opt == 0) { - mint x, y; - std::cin >> r >> x >> y; - segt.update(l, r, F{x, y}); - } else - std::cout << segt.query(l).first << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-datastructure/range_affine_range_sum.ds.test.cpp b/src/test_cpverifier/library-checker-datastructure/range_affine_range_sum.ds.test.cpp deleted file mode 100644 index b67a56da2..000000000 --- a/src/test_cpverifier/library-checker-datastructure/range_affine_range_sum.ds.test.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/range_affine_range_sum" - -#include "../../code/ds/segtree.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using T = std::pair; // sum len -using F = std::pair; // mul add - -auto op(T a, T b) { return T{a.first + b.first, a.second + b.second}; } -auto e() { return T{0, 0}; } -auto mapping(T a, F f) { return T{f.first * a.first + f.second * a.second, a.second}; } -auto composition(F f, F g) { - return F{f.first * g.first, g.first * f.second + g.second}; - // g(x) = g.mul * x + g.add - // f(g(x)) = f.mul * (g.mul * x + g.add) + f.add = f.mul * g.mul * x + f.mul * g.add + f.add -} -auto id() { return F{1, 0}; } - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, q; - std::cin >> n >> q; - vec a(n); - for (auto &x : a) std::cin >> x.first, x.second = 1; - tifa_libs::ds::segtree segt(a); - fle_ (u32, i, 1, q) { - u32 opt, l, r; - std::cin >> opt >> l >> r; - if (opt == 0) { - mint x, y; - std::cin >> x >> y; - segt.update(l, r, F{x, y}); - } else - std::cout << segt.query(l, r).first << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-datastructure/range_affine_range_sum.ss.test.cpp b/src/test_cpverifier/library-checker-datastructure/range_affine_range_sum.ss.test.cpp deleted file mode 100644 index de177fd75..000000000 --- a/src/test_cpverifier/library-checker-datastructure/range_affine_range_sum.ss.test.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/range_affine_range_sum" - -#include "../../code/ds/segtree.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using T = std::pair; // sum len -using F = std::pair; // mul add - -auto op(T a, T b) { return T{a.first + b.first, a.second + b.second}; } -auto e() { return T{0, 0}; } -auto mapping(T a, F f) { return T{f.first * a.first + f.second * a.second, a.second}; } -auto composition(F f, F g) { - return F{f.first * g.first, g.first * f.second + g.second}; - // g(x) = g.mul * x + g.add - // f(g(x)) = f.mul * (g.mul * x + g.add) + f.add = f.mul * g.mul * x + f.mul * g.add + f.add -} -auto id() { return F{1, 0}; } - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, q; - std::cin >> n >> q; - vec a(n); - for (auto &x : a) std::cin >> x.first, x.second = 1; - tifa_libs::ds::segtree segt(a); - fle_ (u32, i, 1, q) { - u32 opt, l, r; - std::cin >> opt >> l >> r; - if (opt == 0) { - mint x, y; - std::cin >> x >> y; - segt.update(l, r, F{x, y}); - } else - std::cout << segt.query(l, r).first << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-datastructure/vertex_set_path_composite.ds.test.cpp b/src/test_cpverifier/library-checker-datastructure/vertex_set_path_composite.ds.test.cpp deleted file mode 100644 index 0bc1c57da..000000000 --- a/src/test_cpverifier/library-checker-datastructure/vertex_set_path_composite.ds.test.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/vertex_set_path_composite/" - -#include "../../code/ds/hld.hpp" -#include "../../code/tree/lca_hld.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using Ty = mint; -using T = std::pair; -using F = T; - -constexpr auto op_ab(T a, T b) { // a(b(x)) - return T{a.first * b.first, a.first * b.second + a.second}; -} -constexpr auto op_ba(T a, T b) { // b(a(x)) - return op_ab(b, a); -} -constexpr auto e() { return T{1, 0}; } -constexpr auto id() { return F{1, 0}; } -constexpr auto mapping(T, F a) { return T{a}; } -constexpr auto composition(F, F) { return F{1, 0}; } - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, q; - std::cin >> n >> q; - vec a(n); - for (auto &x : a) std::cin >> x.first >> x.second; - tifa_libs::graph::tree tr(n); - for (u32 i = 1, u, v; i < n; ++i) std::cin >> u >> v, tr.add_arc(u, v), tr.add_arc(v, u); - tifa_libs::graph::lca_hld lca(tr); - tifa_libs::ds::hld hld(tr, a); - tifa_libs::ds::hld hld1(tr, a); - for (u32 i = 0, opt; i < q; ++i) { - std::cin >> opt; - if (opt == 0) { - u32 x; - Ty y, z; - std::cin >> x >> y >> z; - hld.node_update(x, F(y, z)), hld1.node_update(x, F(y, z)); - } else { - u32 x, y; - Ty z; - std::cin >> x >> y >> z; - auto [retu, retv] = lca.getchain(x, y); - T ret1 = e(), ret2 = e(); - for (auto x : retu) ret1 = op_ba(ret1, hld1.chain_query(x.first, x.second)); - for (auto x : retv) ret2 = op_ba(ret2, hld.chain_query(x.first, x.second)); - ret1 = op_ba(ret1, ret2); - std::cout << ret1.first * z + ret1.second << '\n'; - } - } - return 0; -} \ No newline at end of file diff --git a/src/test_cpverifier/library-checker-datastructure/vertex_set_path_composite.ss.test.cpp b/src/test_cpverifier/library-checker-datastructure/vertex_set_path_composite.ss.test.cpp deleted file mode 100644 index 498415001..000000000 --- a/src/test_cpverifier/library-checker-datastructure/vertex_set_path_composite.ss.test.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/vertex_set_path_composite/" - -#include "../../code/ds/hld.hpp" -#include "../../code/tree/lca_hld.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using Ty = mint; -using T = std::pair; -using F = T; - -constexpr auto op_ab(T a, T b) { // a(b(x)) - return T{a.first * b.first, a.first * b.second + a.second}; -} -constexpr auto op_ba(T a, T b) { // b(a(x)) - return op_ab(b, a); -} -constexpr auto e() { return T{1, 0}; } -constexpr auto id() { return F{1, 0}; } -constexpr auto mapping(T, F a) { return T{a}; } -constexpr auto composition(F, F) { return F{1, 0}; } - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, q; - std::cin >> n >> q; - vec a(n); - for (auto &x : a) std::cin >> x.first >> x.second; - tifa_libs::graph::tree tr(n); - for (u32 i = 1, u, v; i < n; ++i) std::cin >> u >> v, tr.add_arc(u, v), tr.add_arc(v, u); - tifa_libs::graph::lca_hld lca(tr); - tifa_libs::ds::hld hld(tr, a); - tifa_libs::ds::hld hld1(tr, a); - for (u32 i = 0, opt; i < q; ++i) { - std::cin >> opt; - if (opt == 0) { - u32 x; - Ty y, z; - std::cin >> x >> y >> z; - hld.node_update(x, F(y, z)), hld1.node_update(x, F(y, z)); - } else { - u32 x, y; - Ty z; - std::cin >> x >> y >> z; - auto [retu, retv] = lca.getchain(x, y); - T ret1 = e(), ret2 = e(); - for (auto x : retu) ret1 = op_ba(ret1, hld1.chain_query(x.first, x.second)); - for (auto x : retv) ret2 = op_ba(ret2, hld.chain_query(x.first, x.second)); - ret1 = op_ba(ret1, ret2); - std::cout << ret1.first * z + ret1.second << '\n'; - } - } - return 0; -} \ No newline at end of file diff --git a/src/test_cpverifier/library-checker-geo/static_convex_hull.test.cpp b/src/test_cpverifier/library-checker-geo/static_convex_hull.test.cpp index 725f5b3f5..ae1783b98 100644 --- a/src/test_cpverifier/library-checker-geo/static_convex_hull.test.cpp +++ b/src/test_cpverifier/library-checker-geo/static_convex_hull.test.cpp @@ -15,7 +15,7 @@ int main() { cvh poly(n); std::cin >> poly; poly.init(); - std::cout << poly.vs.size() << '\n'; + std::cout << poly.size() << '\n'; for (auto CR i : poly.vs) std::cout << i << '\n'; } return 0; diff --git a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 609885996..000000000 --- a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/bernoulli_number" - -#include "../../code/comb/gen_bernoulli.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_bernoulli(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s30-ss.test.cpp deleted file mode 100644 index ebd0c6b58..000000000 --- a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/bernoulli_number" - -#include "../../code/comb/gen_bernoulli.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_bernoulli(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s63-d31.test.cpp similarity index 73% rename from src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s63-d31.test.cpp index 1c92ce635..c0a8db5c5 100644 --- a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s63-d63.test.cpp similarity index 73% rename from src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s63-d63.test.cpp index 066185874..fa1cf0fcb 100644 --- a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s63-s30.test.cpp similarity index 72% rename from src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s63-s30.test.cpp index 9d4c42617..59b67ce2c 100644 --- a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s63-s63.test.cpp similarity index 73% rename from src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s63-s63.test.cpp index 9d5771616..e4c666749 100644 --- a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-ds.test.cpp deleted file mode 100644 index e737c157e..000000000 --- a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/bernoulli_number" - -#include "../../code/comb/gen_bernoulli.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_bernoulli(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-ss.test.cpp deleted file mode 100644 index b090ad079..000000000 --- a/src/test_cpverifier/library-checker-math/bernoulli_number.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/bernoulli_number" - -#include "../../code/comb/gen_bernoulli.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_bernoulli(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/bernoulli_number.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/bernoulli_number.pmtt-ds.test.cpp deleted file mode 100644 index 24ea86c3e..000000000 --- a/src/test_cpverifier/library-checker-math/bernoulli_number.pmtt-ds.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/bernoulli_number" - -#include "../../code/comb/gen_bernoulli.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_bernoulli(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/bernoulli_number.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/bernoulli_number.pmtt-ss.test.cpp deleted file mode 100644 index ae960c765..000000000 --- a/src/test_cpverifier/library-checker-math/bernoulli_number.pmtt-ss.test.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/bernoulli_number" - -#include "../../code/comb/gen_bernoulli.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_bernoulli(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/bernoulli_number.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/bernoulli_number.pntt-ss.test.cpp deleted file mode 100644 index 00b4ff218..000000000 --- a/src/test_cpverifier/library-checker-math/bernoulli_number.pntt-ss.test.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/bernoulli_number" - -#include "../../code/comb/gen_bernoulli.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_bernoulli(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/binomial_coefficient_prime_mod.ds.test.cpp b/src/test_cpverifier/library-checker-math/binomial_coefficient_prime_mod.ds.test.cpp deleted file mode 100644 index 53d77eb1b..000000000 --- a/src/test_cpverifier/library-checker-math/binomial_coefficient_prime_mod.ds.test.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/binomial_coefficient_prime_mod" - -#include "../../code/comb/binom.hpp" -#include "../../code/comb/lucas.hpp" -#include "../../code/io/fastio.hpp" -// -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - u32 t, MOD; - tifa_libs::fin >> t >> MOD; - mint::set_mod(MOD); - if (MOD < 1e7) { - tifa_libs::math::Lucas mCn; - while (t--) { - i64 n, k; - tifa_libs::fin >> n >> k; - tifa_libs::fout << mCn(n, k) << '\n'; - } - } else { - tifa_libs::math::Binom mCn(10'000'001); - while (t--) { - i64 n, k; - tifa_libs::fin >> n >> k; - tifa_libs::fout << mCn.mCn(n, k) << '\n'; - } - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/bitwise_and_convolution.ds.test.cpp b/src/test_cpverifier/library-checker-math/bitwise_and_convolution.ds.test.cpp deleted file mode 100644 index df277e2ef..000000000 --- a/src/test_cpverifier/library-checker-math/bitwise_and_convolution.ds.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/bitwise_and_convolution" - -#include "../../code/conv/conv_and.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - vec a(1 << n), b(1 << n); - for (auto &i : a) tifa_libs::fin >> i; - for (auto &i : b) tifa_libs::fin >> i; - tifa_libs::fout << tifa_libs::math::conv_and(a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/bitwise_and_convolution.ss.test.cpp b/src/test_cpverifier/library-checker-math/bitwise_and_convolution.ss.test.cpp deleted file mode 100644 index ea08efe8a..000000000 --- a/src/test_cpverifier/library-checker-math/bitwise_and_convolution.ss.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/bitwise_and_convolution" - -#include "../../code/conv/conv_and.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - u32 n; - tifa_libs::fin >> n; - vec a(1 << n), b(1 << n); - for (auto &i : a) tifa_libs::fin >> i; - for (auto &i : b) tifa_libs::fin >> i; - tifa_libs::fout << tifa_libs::math::conv_and(a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/bitwise_xor_convolution.ds.test.cpp b/src/test_cpverifier/library-checker-math/bitwise_xor_convolution.ds.test.cpp deleted file mode 100644 index c11cfecb6..000000000 --- a/src/test_cpverifier/library-checker-math/bitwise_xor_convolution.ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/bitwise_xor_convolution" - -#include "../../code/conv/conv_xor.hpp" -#include "../../code/io/fastio.hpp" -#include "../../code/math/mint_d31.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - vec a(1 << n), b(1 << n); - for (auto &i : a) tifa_libs::fin >> i; - for (auto &i : b) tifa_libs::fin >> i; - tifa_libs::fout << tifa_libs::math::conv_xor(a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/bitwise_xor_convolution.ss.test.cpp b/src/test_cpverifier/library-checker-math/bitwise_xor_convolution.ss.test.cpp deleted file mode 100644 index dd194799f..000000000 --- a/src/test_cpverifier/library-checker-math/bitwise_xor_convolution.ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/bitwise_xor_convolution" - -#include "../../code/conv/conv_xor.hpp" -#include "../../code/io/fastio.hpp" -#include "../../code/math/mint_d31.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - u32 n; - tifa_libs::fin >> n; - vec a(1 << n), b(1 << n); - for (auto &i : a) tifa_libs::fin >> i; - for (auto &i : b) tifa_libs::fin >> i; - tifa_libs::fout << tifa_libs::math::conv_xor(a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/characteristic_polynomial.ds.test.cpp b/src/test_cpverifier/library-checker-math/characteristic_polynomial.ds.test.cpp deleted file mode 100644 index 46b8b3767..000000000 --- a/src/test_cpverifier/library-checker-math/characteristic_polynomial.ds.test.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/characteristic_polynomial" - -#include "../../code/io/ios_container.hpp" -#include "../../code/lalg/charpoly_mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mat = tifa_libs::math::matrix; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - if (n == 0) { - std::cout << "1\n"; - return 0; - } - mat a(n, n); - std::cin >> a; - auto is_0 = [](cT_(mint) x) { return x.val() == 0; }; - std::cout << tifa_libs::math::charpoly(a, is_0) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/characteristic_polynomial.ss.test.cpp b/src/test_cpverifier/library-checker-math/characteristic_polynomial.ss.test.cpp deleted file mode 100644 index 0b634e6d8..000000000 --- a/src/test_cpverifier/library-checker-math/characteristic_polynomial.ss.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/characteristic_polynomial" - -#include "../../code/io/ios_container.hpp" -#include "../../code/lalg/charpoly_mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using mat = tifa_libs::math::matrix; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - if (n == 0) { - std::cout << "1\n"; - return 0; - } - mat a(n, n); - std::cin >> a; - auto is_0 = [](cT_(mint) x) { return x.val() == 0; }; - std::cout << tifa_libs::math::charpoly(a, is_0) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/conversion_from_monomial_basis_to_newton_basis.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/conversion_from_monomial_basis_to_newton_basis.pntt-ss.test.cpp deleted file mode 100644 index 40f0d5f76..000000000 --- a/src/test_cpverifier/library-checker-math/conversion_from_monomial_basis_to_newton_basis.pntt-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/conversion_from_monomial_basis_to_newton_basis" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/cbm2n_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly f(n); - vec p(n); - tifa_libs::fin >> f.data() >> p; - tifa_libs::fout << tifa_libs::math::cbm2n_fps(f, p).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s30-ds.test.cpp deleted file mode 100644 index 9f4f5f8af..000000000 --- a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/convolution_mod" - -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/conv/conv_czt.hpp" -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - vec a(n), b(m); - tifa_libs::fin >> a >> b; - tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s30-ss.test.cpp deleted file mode 100644 index 54df69ed9..000000000 --- a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/convolution_mod" - -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/conv/conv_czt.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - vec a(n), b(m); - tifa_libs::fin >> a >> b; - tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s63-d31.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s63-d31.test.cpp index e9520939c..27695853e 100644 --- a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/conv/conv_czt.hpp" #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s63-d63.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s63-d63.test.cpp index 72b3f5dd0..5772d63ef 100644 --- a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/conv/conv_czt.hpp" #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s63-s30.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s63-s30.test.cpp index 536ce3c31..df95e0c93 100644 --- a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/conv/conv_czt.hpp" #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s63-s63.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s63-s63.test.cpp index 8447bc5bf..7de31cd9f 100644 --- a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/conv/conv_czt.hpp" #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-ds.test.cpp deleted file mode 100644 index cead24afc..000000000 --- a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/convolution_mod" - -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/conv/conv_czt.hpp" -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - vec a(n), b(m); - tifa_libs::fin >> a >> b; - tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-ss.test.cpp deleted file mode 100644 index b1e801132..000000000 --- a/src/test_cpverifier/library-checker-math/convolution_mod.czt-p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/convolution_mod" - -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/conv/conv_czt.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - vec a(n), b(m); - tifa_libs::fin >> a >> b; - tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/convolution_mod.czt-pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod.czt-pmtt-ds.test.cpp deleted file mode 100644 index ad15d563f..000000000 --- a/src/test_cpverifier/library-checker-math/convolution_mod.czt-pmtt-ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/convolution_mod" - -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/conv/conv_czt.hpp" -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - vec a(n), b(m); - tifa_libs::fin >> a >> b; - tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/convolution_mod.czt-pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod.czt-pntt-ss.test.cpp deleted file mode 100644 index f8d697e53..000000000 --- a/src/test_cpverifier/library-checker-math/convolution_mod.czt-pntt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/convolution_mod" - -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/conv/conv_czt.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - vec a(n), b(m); - tifa_libs::fin >> a >> b; - tifa_libs::fout << tifa_libs::math::conv_czt(poly(a), poly(b)) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/convolution_mod.ntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod.ntt-ss.test.cpp deleted file mode 100644 index abf63d966..000000000 --- a/src/test_cpverifier/library-checker-math/convolution_mod.ntt-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/convolution_mod" - -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/conv/conv_dft.hpp" -#include "../../code/conv/ntt.hpp" -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using ntt_t = tifa_libs::math::NTT; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - vec a(n), b(m); - tifa_libs::fin >> a >> b; - ntt_t ntt; - tifa_libs::fout << tifa_libs::math::conv_dft(ntt, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s30-ds.test.cpp deleted file mode 100644 index 9a2aa13b1..000000000 --- a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/convolution_mod_1000000007" - -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 1000000007; - -#include "../../code/conv/conv_3ntt.hpp" -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint0 = tifa_libs::math::mint_s30<167772161>; -using mint1 = tifa_libs::math::mint_s30<469762049>; -using mint2 = tifa_libs::math::mint_s30<754974721>; -using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - vec a(n), b(m); - tifa_libs::fin >> a >> b; - ntt3_t ntt3; - tifa_libs::fout << tifa_libs::math::conv_3ntt(ntt3, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s30-ss.test.cpp deleted file mode 100644 index 68a9a9d1f..000000000 --- a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/convolution_mod_1000000007" - -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 1000000007; - -#include "../../code/conv/conv_3ntt.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint0 = tifa_libs::math::mint_s30<167772161>; -using mint1 = tifa_libs::math::mint_s30<469762049>; -using mint2 = tifa_libs::math::mint_s30<754974721>; -using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - vec a(n), b(m); - tifa_libs::fin >> a >> b; - ntt3_t ntt3; - tifa_libs::fout << tifa_libs::math::conv_3ntt(ntt3, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s63-d31.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s63-d31.test.cpp index f9780d5f9..8deb68b64 100644 --- a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s63-d31.test.cpp @@ -7,12 +7,12 @@ CEXP u32 MOD = 1000000007; #include "../../code/conv/conv_3ntt.hpp" #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint0 = tifa_libs::math::mint_ss<167772161>; -using mint1 = tifa_libs::math::mint_ss<469762049>; -using mint2 = tifa_libs::math::mint_ss<754974721>; +using mint0 = tifa_libs::math::mint_s63<167772161>; +using mint1 = tifa_libs::math::mint_s63<469762049>; +using mint2 = tifa_libs::math::mint_s63<754974721>; using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; int main() { diff --git a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s63-d63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s63-d63.test.cpp index b74eaceb8..632c7fe94 100644 --- a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s63-d63.test.cpp @@ -7,12 +7,12 @@ CEXP u32 MOD = 1000000007; #include "../../code/conv/conv_3ntt.hpp" #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint0 = tifa_libs::math::mint_ss<167772161>; -using mint1 = tifa_libs::math::mint_ss<469762049>; -using mint2 = tifa_libs::math::mint_ss<754974721>; +using mint0 = tifa_libs::math::mint_s63<167772161>; +using mint1 = tifa_libs::math::mint_s63<469762049>; +using mint2 = tifa_libs::math::mint_s63<754974721>; using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; int main() { diff --git a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s63-s30.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s63-s30.test.cpp index 04051ec43..6349927c1 100644 --- a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s63-s30.test.cpp @@ -7,12 +7,12 @@ CEXP u32 MOD = 1000000007; #include "../../code/conv/conv_3ntt.hpp" #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" using mint = tifa_libs::math::mint_s30; -using mint0 = tifa_libs::math::mint_ss<167772161>; -using mint1 = tifa_libs::math::mint_ss<469762049>; -using mint2 = tifa_libs::math::mint_ss<754974721>; +using mint0 = tifa_libs::math::mint_s63<167772161>; +using mint1 = tifa_libs::math::mint_s63<469762049>; +using mint2 = tifa_libs::math::mint_s63<754974721>; using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; int main() { diff --git a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s63-s63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s63-s63.test.cpp index b0ed20d4a..77341aaa0 100644 --- a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-s63-s63.test.cpp @@ -7,12 +7,11 @@ CEXP u32 MOD = 1000000007; #include "../../code/conv/conv_3ntt.hpp" #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" using mint = tifa_libs::math::mint_s63; -using mint0 = tifa_libs::math::mint_ss<167772161>; -using mint1 = tifa_libs::math::mint_ss<469762049>; -using mint2 = tifa_libs::math::mint_ss<754974721>; +using mint0 = tifa_libs::math::mint_s63<167772161>; +using mint1 = tifa_libs::math::mint_s63<469762049>; +using mint2 = tifa_libs::math::mint_s63<754974721>; using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; int main() { diff --git a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-ds.test.cpp deleted file mode 100644 index ade41cbee..000000000 --- a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/convolution_mod_1000000007" - -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 1000000007; - -#include "../../code/conv/conv_3ntt.hpp" -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint0 = tifa_libs::math::mint_ss<167772161>; -using mint1 = tifa_libs::math::mint_ss<469762049>; -using mint2 = tifa_libs::math::mint_ss<754974721>; -using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - vec a(n), b(m); - tifa_libs::fin >> a >> b; - ntt3_t ntt3; - tifa_libs::fout << tifa_libs::math::conv_3ntt(ntt3, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-ss.test.cpp deleted file mode 100644 index 4a97d8b21..000000000 --- a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/convolution_mod_1000000007" - -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 1000000007; - -#include "../../code/conv/conv_3ntt.hpp" -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint0 = tifa_libs::math::mint_ss<167772161>; -using mint1 = tifa_libs::math::mint_ss<469762049>; -using mint2 = tifa_libs::math::mint_ss<754974721>; -using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - vec a(n), b(m); - tifa_libs::fin >> a >> b; - ntt3_t ntt3; - tifa_libs::fout << tifa_libs::math::conv_3ntt(ntt3, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3nttu64-ss.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3nttu64-s63.test.cpp similarity index 73% rename from src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3nttu64-ss.test.cpp rename to src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3nttu64-s63.test.cpp index afbc85093..6a2ec872a 100644 --- a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3nttu64-ss.test.cpp +++ b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.3nttu64-s63.test.cpp @@ -6,11 +6,11 @@ CEXP u32 MOD = 1000000007; #include "../../code/conv/conv_3ntt.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" -using mint0 = tifa_libs::math::mint_ss<167772161>; -using mint1 = tifa_libs::math::mint_ss<469762049>; -using mint2 = tifa_libs::math::mint_ss<754974721>; +using mint0 = tifa_libs::math::mint_s63<167772161>; +using mint1 = tifa_libs::math::mint_s63<469762049>; +using mint2 = tifa_libs::math::mint_s63<754974721>; using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; int main() { diff --git a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.mtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.mtt-ds.test.cpp deleted file mode 100644 index a65fae09c..000000000 --- a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.mtt-ds.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/convolution_mod_1000000007" - -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 1000000007; - -#include "../../code/conv/conv_mtt.hpp" -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - vec a(n), b(m); - tifa_libs::fin >> a >> b; - tifa_libs::math::FFT fft; - tifa_libs::fout << tifa_libs::math::conv_mtt(fft, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.mtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.mtt-ss.test.cpp deleted file mode 100644 index 30134b540..000000000 --- a/src/test_cpverifier/library-checker-math/convolution_mod_1000000007.mtt-ss.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/convolution_mod_1000000007" - -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 1000000007; - -#include "../../code/conv/conv_mtt.hpp" -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - vec a(n), b(m); - tifa_libs::fin >> a >> b; - tifa_libs::math::FFT fft; - tifa_libs::fout << tifa_libs::math::conv_mtt(fft, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/convolution_mod_large.ntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/convolution_mod_large.ntt-ss.test.cpp deleted file mode 100644 index 4966d9d24..000000000 --- a/src/test_cpverifier/library-checker-math/convolution_mod_large.ntt-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/convolution_mod_large" - -#include "../../code/conv/conv_ntt_large.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/conv/ntt.hpp" -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using ntt_t = tifa_libs::math::NTT; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - vec a(n), b(m); - tifa_libs::fin >> a >> b; - ntt_t ntt; - tifa_libs::fout << tifa_libs::math::conv_ntt_large(ntt, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s30-ds.test.cpp deleted file mode 100644 index bc87b157c..000000000 --- a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/division_of_polynomials" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/divmod_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - poly f(n), g(m); - tifa_libs::fin >> f.data() >> g.data(); - auto [q, r] = tifa_libs::math::divmod_fps(f, g); - if (q.size() == 1 && q[0].val() == 0) q.resize(0); - if (r.size() == 1 && r[0].val() == 0) r.resize(0); - tifa_libs::fout << q.size() << ' ' << r.size() << '\n'; - tifa_libs::fout << q.data() << '\n'; - tifa_libs::fout << r.data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 6c43bab7d..000000000 --- a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/division_of_polynomials" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/divmod_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - poly f(n), g(m); - tifa_libs::fin >> f.data() >> g.data(); - auto [q, r] = tifa_libs::math::divmod_fps(f, g); - if (q.size() == 1 && q[0].val() == 0) q.resize(0); - if (r.size() == 1 && r[0].val() == 0) r.resize(0); - tifa_libs::fout << q.size() << ' ' << r.size() << '\n'; - tifa_libs::fout << q.data() << '\n'; - tifa_libs::fout << r.data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s63-d31.test.cpp similarity index 81% rename from src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s63-d31.test.cpp index 0e230f947..020bd4449 100644 --- a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s63-d63.test.cpp similarity index 81% rename from src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s63-d63.test.cpp index 97f01c556..a8b62d2d5 100644 --- a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s63-s30.test.cpp similarity index 80% rename from src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s63-s30.test.cpp index 0e8072bbe..e34eb5cbd 100644 --- a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s63-s63.test.cpp similarity index 81% rename from src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s63-s63.test.cpp index 69316e8a9..fce5c3637 100644 --- a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 4bb401186..000000000 --- a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/division_of_polynomials" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/divmod_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - poly f(n), g(m); - tifa_libs::fin >> f.data() >> g.data(); - auto [q, r] = tifa_libs::math::divmod_fps(f, g); - if (q.size() == 1 && q[0].val() == 0) q.resize(0); - if (r.size() == 1 && r[0].val() == 0) r.resize(0); - tifa_libs::fout << q.size() << ' ' << r.size() << '\n'; - tifa_libs::fout << q.data() << '\n'; - tifa_libs::fout << r.data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-ss.test.cpp deleted file mode 100644 index fbf79c849..000000000 --- a/src/test_cpverifier/library-checker-math/division_of_polynomials.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/division_of_polynomials" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/divmod_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - poly f(n), g(m); - tifa_libs::fin >> f.data() >> g.data(); - auto [q, r] = tifa_libs::math::divmod_fps(f, g); - if (q.size() == 1 && q[0].val() == 0) q.resize(0); - if (r.size() == 1 && r[0].val() == 0) r.resize(0); - tifa_libs::fout << q.size() << ' ' << r.size() << '\n'; - tifa_libs::fout << q.data() << '\n'; - tifa_libs::fout << r.data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/division_of_polynomials.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/division_of_polynomials.pmtt-ds.test.cpp deleted file mode 100644 index 9e6a8be06..000000000 --- a/src/test_cpverifier/library-checker-math/division_of_polynomials.pmtt-ds.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/division_of_polynomials" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/divmod_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - poly f(n), g(m); - tifa_libs::fin >> f.data() >> g.data(); - auto [q, r] = tifa_libs::math::divmod_fps(f, g); - if (q.size() == 1 && q[0].val() == 0) q.resize(0); - if (r.size() == 1 && r[0].val() == 0) r.resize(0); - tifa_libs::fout << q.size() << ' ' << r.size() << '\n'; - tifa_libs::fout << q.data() << '\n'; - tifa_libs::fout << r.data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/division_of_polynomials.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/division_of_polynomials.pmtt-ss.test.cpp deleted file mode 100644 index 2dbe26b28..000000000 --- a/src/test_cpverifier/library-checker-math/division_of_polynomials.pmtt-ss.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/division_of_polynomials" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/divmod_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - poly f(n), g(m); - tifa_libs::fin >> f.data() >> g.data(); - auto [q, r] = tifa_libs::math::divmod_fps(f, g); - if (q.size() == 1 && q[0].val() == 0) q.resize(0); - if (r.size() == 1 && r[0].val() == 0) r.resize(0); - tifa_libs::fout << q.size() << ' ' << r.size() << '\n'; - tifa_libs::fout << q.data() << '\n'; - tifa_libs::fout << r.data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/division_of_polynomials.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/division_of_polynomials.pntt-ss.test.cpp deleted file mode 100644 index 888e652db..000000000 --- a/src/test_cpverifier/library-checker-math/division_of_polynomials.pntt-ss.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/division_of_polynomials" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/divmod_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - poly f(n), g(m); - tifa_libs::fin >> f.data() >> g.data(); - auto [q, r] = tifa_libs::math::divmod_fps(f, g); - if (q.size() == 1 && q[0].val() == 0) q.resize(0); - if (r.size() == 1 && r[0].val() == 0) r.resize(0); - tifa_libs::fout << q.size() << ' ' << r.size() << '\n'; - tifa_libs::fout << q.data() << '\n'; - tifa_libs::fout << r.data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 03dde21a0..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::exp_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s30-ss.test.cpp deleted file mode 100644 index a05df1e28..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::exp_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s63-d31.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s63-d31.test.cpp index 208fa94fb..0b53df1a7 100644 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s63-d63.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s63-d63.test.cpp index a923b20f3..e65b145cd 100644 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s63-s30.test.cpp similarity index 73% rename from src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s63-s30.test.cpp index 331d5c283..9650fff3c 100644 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s63-s63.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s63-s63.test.cpp index 1f1252a9a..6f4f4983b 100644 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 6690edc82..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::exp_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 88e110049..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::exp_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.pmtt-ds.test.cpp deleted file mode 100644 index 2bbaeb837..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.pmtt-ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::exp_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.pmtt-ss.test.cpp deleted file mode 100644 index 17354ec33..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.pmtt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::exp_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.pntt-ss.test.cpp deleted file mode 100644 index 462055edf..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series.pntt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::exp_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 9ef60c786..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::exp_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 52ca2958f..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::exp_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s63-d31.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s63-d31.test.cpp index 17ea1d92c..2e91c37a9 100644 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s63-d63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s63-d63.test.cpp index 73610aa76..604f0e4ec 100644 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s63-s30.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s63-s30.test.cpp index 9e145d1d7..46a92d6d5 100644 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s63-s63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s63-s63.test.cpp index b5f604ead..5128143f0 100644 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 92f6b01fe..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::exp_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-ss.test.cpp deleted file mode 100644 index c124268da..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::exp_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.pmtt-ds.test.cpp deleted file mode 100644 index 804e2f5af..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.pmtt-ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::exp_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.pmtt-ss.test.cpp deleted file mode 100644 index 7f44e1899..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.pmtt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::exp_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.pntt-ss.test.cpp deleted file mode 100644 index 9b1146feb..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_formal_power_series_sparse.pntt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::exp_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_set_power_series.ds.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_set_power_series.ds.test.cpp deleted file mode 100644 index 975fd952c..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_set_power_series.ds.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_set_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fpssps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - vec b(1 << n); - tifa_libs::fin >> b; - tifa_libs::fout << tifa_libs::math::exp_fpssps(n, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/exp_of_set_power_series.ss.test.cpp b/src/test_cpverifier/library-checker-math/exp_of_set_power_series.ss.test.cpp deleted file mode 100644 index 625394c34..000000000 --- a/src/test_cpverifier/library-checker-math/exp_of_set_power_series.ss.test.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/exp_of_set_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/exp_fpssps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - u32 n; - tifa_libs::fin >> n; - vec b(1 << n); - tifa_libs::fin >> b; - tifa_libs::fout << tifa_libs::math::exp_fpssps(n, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/factorial.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/factorial.p3ntt-s30-ds.test.cpp deleted file mode 100644 index f022c354e..000000000 --- a/src/test_cpverifier/library-checker-math/factorial.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/factorial" - -#include "../../code/math/fact_mint.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 t; - std::cin >> t; - while (t--) { - u64 n; - std::cin >> n; - std::cout << tifa_libs::math::fact_mint(n) << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/factorial.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/factorial.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 22116e4df..000000000 --- a/src/test_cpverifier/library-checker-math/factorial.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/factorial" - -#include "../../code/math/fact_mint.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 t; - std::cin >> t; - while (t--) { - u64 n; - std::cin >> n; - std::cout << tifa_libs::math::fact_mint(n) << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/factorial.p3ntt-s63-d31.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/factorial.p3ntt-s63-d31.test.cpp index 3b2d534e9..7549ad196 100644 --- a/src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/factorial.p3ntt-s63-d31.test.cpp @@ -6,13 +6,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/factorial.p3ntt-s63-d63.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/factorial.p3ntt-s63-d63.test.cpp index 7d82599ff..4bd0c3628 100644 --- a/src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/factorial.p3ntt-s63-d63.test.cpp @@ -6,13 +6,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/factorial.p3ntt-s63-s30.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/factorial.p3ntt-s63-s30.test.cpp index f07739a13..e4084ab30 100644 --- a/src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/factorial.p3ntt-s63-s30.test.cpp @@ -6,13 +6,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/factorial.p3ntt-s63-s63.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/factorial.p3ntt-s63-s63.test.cpp index 25068c9e4..0aefdbeca 100644 --- a/src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/factorial.p3ntt-s63-s63.test.cpp @@ -6,13 +6,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 61ed45478..000000000 --- a/src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/factorial" - -#include "../../code/math/fact_mint.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 t; - std::cin >> t; - while (t--) { - u64 n; - std::cin >> n; - std::cout << tifa_libs::math::fact_mint(n) << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 76a7ec558..000000000 --- a/src/test_cpverifier/library-checker-math/factorial.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/factorial" - -#include "../../code/math/fact_mint.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 t; - std::cin >> t; - while (t--) { - u64 n; - std::cin >> n; - std::cout << tifa_libs::math::fact_mint(n) << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/factorial.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/factorial.pmtt-ds.test.cpp deleted file mode 100644 index 86f6f51bb..000000000 --- a/src/test_cpverifier/library-checker-math/factorial.pmtt-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/factorial" - -#include "../../code/math/fact_mint.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 t; - std::cin >> t; - while (t--) { - u64 n; - std::cin >> n; - std::cout << tifa_libs::math::fact_mint(n) << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/factorial.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/factorial.pmtt-ss.test.cpp deleted file mode 100644 index f573eb55a..000000000 --- a/src/test_cpverifier/library-checker-math/factorial.pmtt-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/factorial" - -#include "../../code/math/fact_mint.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 t; - std::cin >> t; - while (t--) { - u64 n; - std::cin >> n; - std::cout << tifa_libs::math::fact_mint(n) << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/factorial.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/factorial.pntt-ss.test.cpp deleted file mode 100644 index bcfabe43c..000000000 --- a/src/test_cpverifier/library-checker-math/factorial.pntt-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/factorial" - -#include "../../code/math/fact_mint.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 t; - std::cin >> t; - while (t--) { - u64 n; - std::cin >> n; - std::cout << tifa_libs::math::fact_mint(n) << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/find_linear_recurrence.ds.test.cpp b/src/test_cpverifier/library-checker-math/find_linear_recurrence.ds.test.cpp deleted file mode 100644 index 559212767..000000000 --- a/src/test_cpverifier/library-checker-math/find_linear_recurrence.ds.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/find_linear_recurrence" - -#include "../../code/io/ios_container.hpp" -#include "../../code/math/berlekamp_massey.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - vec a(n); - std::cin >> a; - auto b = tifa_libs::math::berlekamp_massey(a); - std::cout << b.size() - 1 << '\n'; - for (u32 i = 1; i < b.size(); ++i) std::cout << -b[i] << " \n"[i + 1 == b.size()]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/find_linear_recurrence.ss.test.cpp b/src/test_cpverifier/library-checker-math/find_linear_recurrence.ss.test.cpp deleted file mode 100644 index 58fc62c02..000000000 --- a/src/test_cpverifier/library-checker-math/find_linear_recurrence.ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/find_linear_recurrence" - -#include "../../code/io/ios_container.hpp" -#include "../../code/math/berlekamp_massey.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - vec a(n); - std::cin >> a; - auto b = tifa_libs::math::berlekamp_massey(a); - std::cout << b.size() - 1 << '\n'; - for (u32 i = 1; i < b.size(); ++i) std::cout << -b[i] << " \n"[i + 1 == b.size()]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/gcd_convolution.ds.test.cpp b/src/test_cpverifier/library-checker-math/gcd_convolution.ds.test.cpp deleted file mode 100644 index 6749ccec4..000000000 --- a/src/test_cpverifier/library-checker-math/gcd_convolution.ds.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/gcd_convolution" - -#include "../../code/conv/conv_gcd.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - vec a(n + 1), b(n + 1); - fle_ (u32, i, 1, n) std::cin >> a[i]; - fle_ (u32, i, 1, n) std::cin >> b[i]; - auto c = tifa_libs::math::conv_gcd(a, b); - for (u32 i = 1; i < c.size(); ++i) std::cout << c[i] << " \n"[i + 1 == c.size()]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/gcd_convolution.ss.test.cpp b/src/test_cpverifier/library-checker-math/gcd_convolution.ss.test.cpp deleted file mode 100644 index dc83dc84d..000000000 --- a/src/test_cpverifier/library-checker-math/gcd_convolution.ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/gcd_convolution" - -#include "../../code/conv/conv_gcd.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - vec a(n + 1), b(n + 1); - fle_ (u32, i, 1, n) std::cin >> a[i]; - fle_ (u32, i, 1, n) std::cin >> b[i]; - auto c = tifa_libs::math::conv_gcd(a, b); - for (u32 i = 1; i < c.size(); ++i) std::cout << c[i] << " \n"[i + 1 == c.size()]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/hafnian_of_matrix.ds.test.cpp b/src/test_cpverifier/library-checker-math/hafnian_of_matrix.ds.test.cpp deleted file mode 100644 index 7f3956b38..000000000 --- a/src/test_cpverifier/library-checker-math/hafnian_of_matrix.ds.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/hafnian_of_matrix" - -#include "../../code/lalg/hafnian_mat.hpp" -#include "../../code/lalg/mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mat = tifa_libs::math::matrix; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - mat a(n, n); - std::cin >> a; - std::cout << tifa_libs::math::hafnian(a); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/hafnian_of_matrix.ss.test.cpp b/src/test_cpverifier/library-checker-math/hafnian_of_matrix.ss.test.cpp deleted file mode 100644 index f46d0261e..000000000 --- a/src/test_cpverifier/library-checker-math/hafnian_of_matrix.ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/hafnian_of_matrix" - -#include "../../code/lalg/hafnian_mat.hpp" -#include "../../code/lalg/mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using mat = tifa_libs::math::matrix; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - mat a(n, n); - std::cin >> a; - std::cout << tifa_libs::math::hafnian(a); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 139c9715a..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/inv_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::inv_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 32f79c30a..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/inv_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::inv_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s63-d31.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s63-d31.test.cpp index 4f0d76d4f..c81165e9f 100644 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s63-d63.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s63-d63.test.cpp index a6c1cb1dd..749241bd2 100644 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s63-s30.test.cpp similarity index 73% rename from src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s63-s30.test.cpp index 186ec9ebc..5bd773e4d 100644 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s63-s63.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s63-s63.test.cpp index ac9bd9da7..463e2060c 100644 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-ds.test.cpp deleted file mode 100644 index e445447be..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/inv_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::inv_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 9d87a5ed7..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/inv_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::inv_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.pmtt-ds.test.cpp deleted file mode 100644 index 117cbfd7c..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.pmtt-ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/inv_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::inv_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.pmtt-ss.test.cpp deleted file mode 100644 index 2d7dc0fd6..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.pmtt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/inv_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::inv_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.pntt-ss.test.cpp deleted file mode 100644 index ab71f4bba..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series.pntt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/inv_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::inv_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 0ba9dc8b6..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/inv_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::inv_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 74c61145c..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/inv_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::inv_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s63-d31.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s63-d31.test.cpp index 1965904e3..957b7d145 100644 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s63-d63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s63-d63.test.cpp index 162b54584..ff551ba77 100644 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s63-s30.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s63-s30.test.cpp index e67e0daa9..20e8a210d 100644 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s63-s63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s63-s63.test.cpp index e5d38332d..ecaba6e1e 100644 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 61599ec69..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/inv_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::inv_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 70161477f..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/inv_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::inv_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.pmtt-ds.test.cpp deleted file mode 100644 index 21e425faf..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.pmtt-ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/inv_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::inv_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.pmtt-ss.test.cpp deleted file mode 100644 index 4eff2ed92..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.pmtt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/inv_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::inv_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.pntt-ss.test.cpp deleted file mode 100644 index 9c4387ce7..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_formal_power_series_sparse.pntt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/inv_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::inv_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 5c8c5c63e..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_polynomials" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/modinv_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - poly a(n), b(m); - tifa_libs::fin >> a.data() >> b.data(); - auto _ = tifa_libs::math::modinv_fps(a, b); - if (!_.has_value()) tifa_libs::fout << "-1\n"; - else if (_.value().empty()) tifa_libs::fout << "0\n"; - else tifa_libs::fout << _.value().size() << '\n' - << _.value().data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s30-ss.test.cpp deleted file mode 100644 index da44adde0..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_polynomials" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/modinv_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - poly a(n), b(m); - tifa_libs::fin >> a.data() >> b.data(); - auto _ = tifa_libs::math::modinv_fps(a, b); - if (!_.has_value()) tifa_libs::fout << "-1\n"; - else if (_.value().empty()) tifa_libs::fout << "0\n"; - else tifa_libs::fout << _.value().size() << '\n' - << _.value().data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s63-d31.test.cpp similarity index 80% rename from src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s63-d31.test.cpp index 2be227446..3c143ad83 100644 --- a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s63-d63.test.cpp similarity index 80% rename from src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s63-d63.test.cpp index fa24f9b3f..365a769f5 100644 --- a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s63-s30.test.cpp similarity index 79% rename from src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s63-s30.test.cpp index 37480a2e0..72f1b317c 100644 --- a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s63-s63.test.cpp similarity index 80% rename from src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s63-s63.test.cpp index 0e58988ee..cc8a6fc31 100644 --- a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-ds.test.cpp deleted file mode 100644 index be84375b6..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_polynomials" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/modinv_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - poly a(n), b(m); - tifa_libs::fin >> a.data() >> b.data(); - auto _ = tifa_libs::math::modinv_fps(a, b); - if (!_.has_value()) tifa_libs::fout << "-1\n"; - else if (_.value().empty()) tifa_libs::fout << "0\n"; - else tifa_libs::fout << _.value().size() << '\n' - << _.value().data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 61da45cc5..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_polynomials.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_polynomials" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/modinv_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - poly a(n), b(m); - tifa_libs::fin >> a.data() >> b.data(); - auto _ = tifa_libs::math::modinv_fps(a, b); - if (!_.has_value()) tifa_libs::fout << "-1\n"; - else if (_.value().empty()) tifa_libs::fout << "0\n"; - else tifa_libs::fout << _.value().size() << '\n' - << _.value().data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_polynomials.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_polynomials.pmtt-ds.test.cpp deleted file mode 100644 index 73297edbe..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_polynomials.pmtt-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_polynomials" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/modinv_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - poly a(n), b(m); - tifa_libs::fin >> a.data() >> b.data(); - auto _ = tifa_libs::math::modinv_fps(a, b); - if (!_.has_value()) tifa_libs::fout << "-1\n"; - else if (_.value().empty()) tifa_libs::fout << "0\n"; - else tifa_libs::fout << _.value().size() << '\n' - << _.value().data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_polynomials.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_polynomials.pmtt-ss.test.cpp deleted file mode 100644 index f40454266..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_polynomials.pmtt-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_polynomials" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/modinv_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - poly a(n), b(m); - tifa_libs::fin >> a.data() >> b.data(); - auto _ = tifa_libs::math::modinv_fps(a, b); - if (!_.has_value()) tifa_libs::fout << "-1\n"; - else if (_.value().empty()) tifa_libs::fout << "0\n"; - else tifa_libs::fout << _.value().size() << '\n' - << _.value().data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inv_of_polynomials.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/inv_of_polynomials.pntt-ss.test.cpp deleted file mode 100644 index abd4d054c..000000000 --- a/src/test_cpverifier/library-checker-math/inv_of_polynomials.pntt-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inv_of_polynomials" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/modinv_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - poly a(n), b(m); - tifa_libs::fin >> a.data() >> b.data(); - auto _ = tifa_libs::math::modinv_fps(a, b); - if (!_.has_value()) tifa_libs::fout << "-1\n"; - else if (_.value().empty()) tifa_libs::fout << "0\n"; - else tifa_libs::fout << _.value().size() << '\n' - << _.value().data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inverse_matrix.ds.test.cpp b/src/test_cpverifier/library-checker-math/inverse_matrix.ds.test.cpp deleted file mode 100644 index 4b95af28b..000000000 --- a/src/test_cpverifier/library-checker-math/inverse_matrix.ds.test.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inverse_matrix" - -#include "../../code/lalg/ge_basic_mat.hpp" -#include "../../code/lalg/inv_mat.hpp" -#include "../../code/lalg/mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mat = tifa_libs::math::matrix; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - mat a(n, n); - std::cin >> a; - auto is_0 = [](cT_(mint) x) { return x.val() == 0; }; - auto ge = [&is_0](mat &m, bool f) { return tifa_libs::math::ge_basic(m, is_0, f); }; - auto res = tifa_libs::math::inv_mat(a, is_0, ge); - if (res) - std::cout << res.value(); - else - std::cout << "-1\n"; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/inverse_matrix.ss.test.cpp b/src/test_cpverifier/library-checker-math/inverse_matrix.ss.test.cpp deleted file mode 100644 index cb71ca85c..000000000 --- a/src/test_cpverifier/library-checker-math/inverse_matrix.ss.test.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/inverse_matrix" - -#include "../../code/lalg/ge_basic_mat.hpp" -#include "../../code/lalg/inv_mat.hpp" -#include "../../code/lalg/mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using mat = tifa_libs::math::matrix; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - mat a(n, n); - std::cin >> a; - auto is_0 = [](cT_(mint) x) { return x.val() == 0; }; - auto ge = [&is_0](mat &m, bool f) { return tifa_libs::math::ge_basic(m, is_0, f); }; - auto res = tifa_libs::math::inv_mat(a, is_0, ge); - if (res) - std::cout << res.value(); - else - std::cout << "-1\n"; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 794773d8c..000000000 --- a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/kth_term_of_linearly_recurrent_sequence" - -#include "../../code/io/ios_container.hpp" -#include "../../code/math/nth_term_lrec.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 d; - u64 k; - std::cin >> d >> k; - vec a(d), c(d + 1); - std::cin >> a; - c[0] = 1; - fle_ (u32, i, 1, d) { - std::cin >> c[i]; - c[i] = -c[i]; - } - std::cout << tifa_libs::math::nth_term_lrec(k, a, c) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 6e841b4b8..000000000 --- a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/kth_term_of_linearly_recurrent_sequence" - -#include "../../code/io/ios_container.hpp" -#include "../../code/math/nth_term_lrec.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 d; - u64 k; - std::cin >> d >> k; - vec a(d), c(d + 1); - std::cin >> a; - c[0] = 1; - fle_ (u32, i, 1, d) { - std::cin >> c[i]; - c[i] = -c[i]; - } - std::cout << tifa_libs::math::nth_term_lrec(k, a, c) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s63-d31.test.cpp similarity index 79% rename from src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s63-d31.test.cpp index b1fa04d7e..90f1fea39 100644 --- a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s63-d63.test.cpp similarity index 79% rename from src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s63-d63.test.cpp index 3d7d56073..17fc57f94 100644 --- a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s63-s30.test.cpp similarity index 79% rename from src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s63-s30.test.cpp index a5ef77052..f5ea6cec2 100644 --- a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s63-s63.test.cpp similarity index 79% rename from src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s63-s63.test.cpp index d2226ac7d..fc0ad9bf7 100644 --- a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 977e4c5ab..000000000 --- a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/kth_term_of_linearly_recurrent_sequence" - -#include "../../code/io/ios_container.hpp" -#include "../../code/math/nth_term_lrec.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 d; - u64 k; - std::cin >> d >> k; - vec a(d), c(d + 1); - std::cin >> a; - c[0] = 1; - fle_ (u32, i, 1, d) { - std::cin >> c[i]; - c[i] = -c[i]; - } - std::cout << tifa_libs::math::nth_term_lrec(k, a, c) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 59bf2ec84..000000000 --- a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/kth_term_of_linearly_recurrent_sequence" - -#include "../../code/io/ios_container.hpp" -#include "../../code/math/nth_term_lrec.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 d; - u64 k; - std::cin >> d >> k; - vec a(d), c(d + 1); - std::cin >> a; - c[0] = 1; - fle_ (u32, i, 1, d) { - std::cin >> c[i]; - c[i] = -c[i]; - } - std::cout << tifa_libs::math::nth_term_lrec(k, a, c) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.pmtt-ds.test.cpp deleted file mode 100644 index b68d3dbe8..000000000 --- a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.pmtt-ds.test.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/kth_term_of_linearly_recurrent_sequence" - -#include "../../code/io/ios_container.hpp" -#include "../../code/math/nth_term_lrec.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 d; - u64 k; - std::cin >> d >> k; - vec a(d), c(d + 1); - std::cin >> a; - c[0] = 1; - fle_ (u32, i, 1, d) { - std::cin >> c[i]; - c[i] = -c[i]; - } - std::cout << tifa_libs::math::nth_term_lrec(k, a, c) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.pmtt-ss.test.cpp deleted file mode 100644 index a576c05d5..000000000 --- a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.pmtt-ss.test.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/kth_term_of_linearly_recurrent_sequence" - -#include "../../code/io/ios_container.hpp" -#include "../../code/math/nth_term_lrec.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 d; - u64 k; - std::cin >> d >> k; - vec a(d), c(d + 1); - std::cin >> a; - c[0] = 1; - fle_ (u32, i, 1, d) { - std::cin >> c[i]; - c[i] = -c[i]; - } - std::cout << tifa_libs::math::nth_term_lrec(k, a, c) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.pntt-ss.test.cpp deleted file mode 100644 index fd64b49a9..000000000 --- a/src/test_cpverifier/library-checker-math/kth_term_of_linearly_recurrent_sequence.pntt-ss.test.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/kth_term_of_linearly_recurrent_sequence" - -#include "../../code/io/ios_container.hpp" -#include "../../code/math/nth_term_lrec.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 d; - u64 k; - std::cin >> d >> k; - vec a(d), c(d + 1); - std::cin >> a; - c[0] = 1; - fle_ (u32, i, 1, d) { - std::cin >> c[i]; - c[i] = -c[i]; - } - std::cout << tifa_libs::math::nth_term_lrec(k, a, c) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/lcm_convolution.ds.test.cpp b/src/test_cpverifier/library-checker-math/lcm_convolution.ds.test.cpp deleted file mode 100644 index b14cb32ae..000000000 --- a/src/test_cpverifier/library-checker-math/lcm_convolution.ds.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/lcm_convolution" - -#include "../../code/conv/conv_lcm.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - vec a(n + 1), b(n + 1); - fle_ (u32, i, 1, n) std::cin >> a[i]; - fle_ (u32, i, 1, n) std::cin >> b[i]; - auto c = tifa_libs::math::conv_lcm(a, b); - for (u32 i = 1; i < c.size(); ++i) std::cout << c[i] << " \n"[i + 1 == c.size()]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/lcm_convolution.ss.test.cpp b/src/test_cpverifier/library-checker-math/lcm_convolution.ss.test.cpp deleted file mode 100644 index 5e7a33083..000000000 --- a/src/test_cpverifier/library-checker-math/lcm_convolution.ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/lcm_convolution" - -#include "../../code/conv/conv_lcm.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - vec a(n + 1), b(n + 1); - fle_ (u32, i, 1, n) std::cin >> a[i]; - fle_ (u32, i, 1, n) std::cin >> b[i]; - auto c = tifa_libs::math::conv_lcm(a, b); - for (u32 i = 1; i < c.size(); ++i) std::cout << c[i] << " \n"[i + 1 == c.size()]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s30-ds.test.cpp deleted file mode 100644 index afbca36e5..000000000 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/log_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ln_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::ln_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 8692d12d4..000000000 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/log_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ln_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::ln_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s63-d31.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s63-d31.test.cpp index 67bb7ce53..94c445f45 100644 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s63-d63.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s63-d63.test.cpp index dbd6fbc54..998fbb954 100644 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s63-s30.test.cpp similarity index 73% rename from src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s63-s30.test.cpp index dd49f8027..e72ead347 100644 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s63-s63.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s63-s63.test.cpp index cdebda87d..e39038d4f 100644 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-ds.test.cpp deleted file mode 100644 index c476f5ffd..000000000 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/log_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ln_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::ln_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-ss.test.cpp deleted file mode 100644 index b738e12b3..000000000 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/log_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ln_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::ln_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.pmtt-ds.test.cpp deleted file mode 100644 index a30b0d196..000000000 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.pmtt-ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/log_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ln_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::ln_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.pmtt-ss.test.cpp deleted file mode 100644 index 798d3dcd2..000000000 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.pmtt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/log_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ln_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::ln_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series.pntt-ss.test.cpp deleted file mode 100644 index a3d6c6bd5..000000000 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series.pntt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/log_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ln_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - tifa_libs::fout << tifa_libs::math::ln_fps(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s30-ds.test.cpp deleted file mode 100644 index d2bcbd8d9..000000000 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/log_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ln_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::ln_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s30-ss.test.cpp deleted file mode 100644 index a71b5aada..000000000 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/log_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ln_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::ln_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s63-d31.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s63-d31.test.cpp index 75125fdc2..a10a95e94 100644 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s63-d63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s63-d63.test.cpp index 5f411597b..138f51605 100644 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s63-s30.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s63-s30.test.cpp index 539bf250f..191e27ba1 100644 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s63-s63.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s63-s63.test.cpp index c24816307..c06998a9c 100644 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-ds.test.cpp deleted file mode 100644 index c274fe17c..000000000 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/log_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ln_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::ln_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-ss.test.cpp deleted file mode 100644 index f7c8ef3c6..000000000 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/log_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ln_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::ln_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.pmtt-ds.test.cpp deleted file mode 100644 index fbfbc6179..000000000 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.pmtt-ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/log_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ln_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::ln_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.pmtt-ss.test.cpp deleted file mode 100644 index 8f4486a59..000000000 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.pmtt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/log_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ln_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::ln_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.pntt-ss.test.cpp deleted file mode 100644 index 726429f3e..000000000 --- a/src/test_cpverifier/library-checker-math/log_of_formal_power_series_sparse.pntt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/log_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ln_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::ln_fpssp(p).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/matrix_det.ds.test.cpp b/src/test_cpverifier/library-checker-math/matrix_det.ds.test.cpp deleted file mode 100644 index e230b0fcd..000000000 --- a/src/test_cpverifier/library-checker-math/matrix_det.ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/matrix_det" - -#include "../../code/lalg/det_mat.hpp" -#include "../../code/lalg/ge_basic_mat.hpp" -#include "../../code/lalg/mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mat = tifa_libs::math::matrix; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - mat a(n, n); - std::cin >> a; - auto is_0 = [](cT_(mint) x) { return x.val() == 0; }; - auto ge = [&is_0](mat &m, bool f) { return tifa_libs::math::ge_basic(m, is_0, f); }; - std::cout << det(a, ge); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/matrix_det.ss.test.cpp b/src/test_cpverifier/library-checker-math/matrix_det.ss.test.cpp deleted file mode 100644 index b1df896a8..000000000 --- a/src/test_cpverifier/library-checker-math/matrix_det.ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/matrix_det" - -#include "../../code/lalg/det_mat.hpp" -#include "../../code/lalg/ge_basic_mat.hpp" -#include "../../code/lalg/mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using mat = tifa_libs::math::matrix; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - mat a(n, n); - std::cin >> a; - auto is_0 = [](cT_(mint) x) { return x.val() == 0; }; - auto ge = [&is_0](mat &m, bool f) { return tifa_libs::math::ge_basic(m, is_0, f); }; - std::cout << det(a, ge); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/matrix_det_arbitrary_mod.d31.test.cpp b/src/test_cpverifier/library-checker-math/matrix_det_arbitrary_mod.d31.test.cpp index 81b549fe3..e9cfc8b89 100644 --- a/src/test_cpverifier/library-checker-math/matrix_det_arbitrary_mod.d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/matrix_det_arbitrary_mod.d31.test.cpp @@ -8,6 +8,7 @@ #include "../../code/math/mint_d31.hpp" using mint = tifa_libs::math::mint_d31<-1>; + using mat = tifa_libs::math::matrix; int main() { diff --git a/src/test_cpverifier/library-checker-math/matrix_det_arbitrary_mod.ds.test.cpp b/src/test_cpverifier/library-checker-math/matrix_det_arbitrary_mod.ds.test.cpp deleted file mode 100644 index 1a0abf97d..000000000 --- a/src/test_cpverifier/library-checker-math/matrix_det_arbitrary_mod.ds.test.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/matrix_det_arbitrary_mod" - -#include "../../code/lalg/det_mat.hpp" -#include "../../code/lalg/ge_euclid_mat.hpp" -#include "../../code/lalg/mat.hpp" -// -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mat = tifa_libs::math::matrix; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, MOD; - std::cin >> n >> MOD; - mint::set_mod(MOD); - if (!n) { - std::cout << "1\n"; - return 0; - } - mat a(n, n); - std::cin >> a; - auto is_0 = [](cT_(mint) x) { return x.val() == 0; }; - auto div = [](cT_(mint) x, cT_(mint) y) -> mint { return x.val() / y.val(); }; - auto ge = [&is_0, &div](mat &m, bool f) { return tifa_libs::math::ge_euclid(m, is_0, div, f); }; - std::cout << det(a, ge); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/matrix_product.ds.test.cpp b/src/test_cpverifier/library-checker-math/matrix_product.ds.test.cpp deleted file mode 100644 index eca7dc5c3..000000000 --- a/src/test_cpverifier/library-checker-math/matrix_product.ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/matrix_product" - -#include "../../code/lalg/mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mat = tifa_libs::math::matrix; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, m, k; - std::cin >> n >> m >> k; - mat a(n, m), b(m, k); - std::cin >> a >> b; - std::cout << a * b << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/matrix_product.ss.test.cpp b/src/test_cpverifier/library-checker-math/matrix_product.ss.test.cpp deleted file mode 100644 index b20d8505c..000000000 --- a/src/test_cpverifier/library-checker-math/matrix_product.ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/matrix_product" - -#include "../../code/lalg/mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using mat = tifa_libs::math::matrix; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, m, k; - std::cin >> n >> m >> k; - mat a(n, m), b(m, k); - std::cin >> a >> b; - std::cout << a * b << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/matrix_rank.ds.test.cpp b/src/test_cpverifier/library-checker-math/matrix_rank.ds.test.cpp deleted file mode 100644 index 6538acfbe..000000000 --- a/src/test_cpverifier/library-checker-math/matrix_rank.ds.test.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/matrix_rank" - -#include "../../code/lalg/ge_basic_mat.hpp" -#include "../../code/lalg/mat.hpp" -#include "../../code/lalg/rk_mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mat = tifa_libs::math::matrix; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, m; - std::cin >> n >> m; - if (!n || !m) { - std::cout << "0\n"; - return 0; - } - mat a(n, m); - std::cin >> a; - auto is_0 = [](cT_(mint) x) { return x.val() == 0; }; - auto ge = [&is_0](mat &m, bool f) { return tifa_libs::math::ge_basic(m, is_0, f); }; - std::cout << tifa_libs::math::do_rank(a, ge); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/matrix_rank.ss.test.cpp b/src/test_cpverifier/library-checker-math/matrix_rank.ss.test.cpp deleted file mode 100644 index 967175851..000000000 --- a/src/test_cpverifier/library-checker-math/matrix_rank.ss.test.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/matrix_rank" - -#include "../../code/lalg/ge_basic_mat.hpp" -#include "../../code/lalg/mat.hpp" -#include "../../code/lalg/rk_mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using mat = tifa_libs::math::matrix; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, m; - std::cin >> n >> m; - if (!n || !m) { - std::cout << "0\n"; - return 0; - } - mat a(n, m); - std::cin >> a; - auto is_0 = [](cT_(mint) x) { return x.val() == 0; }; - auto ge = [&is_0](mat &m, bool f) { return tifa_libs::math::ge_basic(m, is_0, f); }; - std::cout << tifa_libs::math::do_rank(a, ge); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s30-ds.test.cpp deleted file mode 100644 index da829b700..000000000 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/multipoint_evaluation" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/mpe_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - poly a(n), p(m); - tifa_libs::fin >> a.data() >> p.data(); - tifa_libs::fout << tifa_libs::math::mpe_fps(a, p).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s30-ss.test.cpp deleted file mode 100644 index cc3151a8e..000000000 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/multipoint_evaluation" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/mpe_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - poly a(n), p(m); - tifa_libs::fin >> a.data() >> p.data(); - tifa_libs::fout << tifa_libs::math::mpe_fps(a, p).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s63-d31.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s63-d31.test.cpp index 0daf12d5a..7d149035c 100644 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s63-d63.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s63-d63.test.cpp index 8bc927c3a..d16a7bed9 100644 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s63-s30.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s63-s30.test.cpp index 74d30cf9b..fa39b4668 100644 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s63-s63.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s63-s63.test.cpp index c4e0f72de..58d1959c3 100644 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 857bf5564..000000000 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/multipoint_evaluation" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/mpe_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - poly a(n), p(m); - tifa_libs::fin >> a.data() >> p.data(); - tifa_libs::fout << tifa_libs::math::mpe_fps(a, p).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 9c3dfdf2d..000000000 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/multipoint_evaluation" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/mpe_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - poly a(n), p(m); - tifa_libs::fin >> a.data() >> p.data(); - tifa_libs::fout << tifa_libs::math::mpe_fps(a, p).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation.pmtt-ds.test.cpp deleted file mode 100644 index 1f6aada06..000000000 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation.pmtt-ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/multipoint_evaluation" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/mpe_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - tifa_libs::fin >> n >> m; - poly a(n), p(m); - tifa_libs::fin >> a.data() >> p.data(); - tifa_libs::fout << tifa_libs::math::mpe_fps(a, p).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation.pmtt-ss.test.cpp deleted file mode 100644 index fcfa78c6f..000000000 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation.pmtt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/multipoint_evaluation" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/mpe_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - poly a(n), p(m); - tifa_libs::fin >> a.data() >> p.data(); - tifa_libs::fout << tifa_libs::math::mpe_fps(a, p).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation.pntt-ss.test.cpp deleted file mode 100644 index ad3cd93ae..000000000 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation.pntt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/multipoint_evaluation" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/mpe_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n, m; - tifa_libs::fin >> n >> m; - poly a(n), p(m); - tifa_libs::fin >> a.data() >> p.data(); - tifa_libs::fout << tifa_libs::math::mpe_fps(a, p).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 96df1ca06..000000000 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/multipoint_evaluation_on_geometric_sequence" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/czt_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - mint a, r; - tifa_libs::fin >> n >> m >> a >> r; - poly f(n); - tifa_libs::fin >> f.data(); - tifa_libs::fout << tifa_libs::math::czt_fps(f, r, m, a).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 775193e02..000000000 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/multipoint_evaluation_on_geometric_sequence" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/czt_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, m; - mint a, r; - tifa_libs::fin >> n >> m >> a >> r; - poly f(n); - tifa_libs::fin >> f.data(); - tifa_libs::fout << tifa_libs::math::czt_fps(f, r, m, a).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s63-d31.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s63-d31.test.cpp index ef9d00dc4..b09628d9d 100644 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s63-d63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s63-d63.test.cpp index de6ae60f3..50a9a8f78 100644 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s63-s30.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s63-s30.test.cpp index acc084186..00aef7a65 100644 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s63-s63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s63-s63.test.cpp index cc64a0c7b..82a9941f0 100644 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 85ac9b4fa..000000000 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/multipoint_evaluation_on_geometric_sequence" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/czt_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - mint a, r; - tifa_libs::fin >> n >> m >> a >> r; - poly f(n); - tifa_libs::fin >> f.data(); - tifa_libs::fout << tifa_libs::math::czt_fps(f, r, m, a).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 37b868101..000000000 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/multipoint_evaluation_on_geometric_sequence" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/czt_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, m; - mint a, r; - tifa_libs::fin >> n >> m >> a >> r; - poly f(n); - tifa_libs::fin >> f.data(); - tifa_libs::fout << tifa_libs::math::czt_fps(f, r, m, a).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.pmtt-ds.test.cpp deleted file mode 100644 index 72c0cec0f..000000000 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.pmtt-ds.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/multipoint_evaluation_on_geometric_sequence" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/czt_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n, m; - mint a, r; - tifa_libs::fin >> n >> m >> a >> r; - poly f(n); - tifa_libs::fin >> f.data(); - tifa_libs::fout << tifa_libs::math::czt_fps(f, r, m, a).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.pmtt-ss.test.cpp deleted file mode 100644 index 01c1010bd..000000000 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.pmtt-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/multipoint_evaluation_on_geometric_sequence" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/czt_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n, m; - mint a, r; - tifa_libs::fin >> n >> m >> a >> r; - poly f(n); - tifa_libs::fin >> f.data(); - tifa_libs::fout << tifa_libs::math::czt_fps(f, r, m, a).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.pntt-ss.test.cpp deleted file mode 100644 index 99a2c605f..000000000 --- a/src/test_cpverifier/library-checker-math/multipoint_evaluation_on_geometric_sequence.pntt-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/multipoint_evaluation_on_geometric_sequence" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/czt_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n, m; - mint a, r; - tifa_libs::fin >> n >> m >> a >> r; - poly f(n); - tifa_libs::fin >> f.data(); - tifa_libs::fout << tifa_libs::math::czt_fps(f, r, m, a).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/partition_function.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 38154fc95..000000000 --- a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/partition_function" - -#include "../../code/comb/gen_partition.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_partition(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/partition_function.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 6572ea037..000000000 --- a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/partition_function" - -#include "../../code/comb/gen_partition.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_partition(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/partition_function.p3ntt-s63-d31.test.cpp similarity index 73% rename from src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/partition_function.p3ntt-s63-d31.test.cpp index 97b4efe4e..ee9fe2fec 100644 --- a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/partition_function.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/partition_function.p3ntt-s63-d63.test.cpp similarity index 73% rename from src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/partition_function.p3ntt-s63-d63.test.cpp index 83c5cfb1f..8cd904689 100644 --- a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/partition_function.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/partition_function.p3ntt-s63-s30.test.cpp similarity index 72% rename from src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/partition_function.p3ntt-s63-s30.test.cpp index 24a5a1d65..0b4b4a820 100644 --- a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/partition_function.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/partition_function.p3ntt-s63-s63.test.cpp similarity index 73% rename from src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/partition_function.p3ntt-s63-s63.test.cpp index 49fd4c848..bd12a2f61 100644 --- a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/partition_function.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 72db4215e..000000000 --- a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/partition_function" - -#include "../../code/comb/gen_partition.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_partition(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-ss.test.cpp deleted file mode 100644 index bbfa91cf2..000000000 --- a/src/test_cpverifier/library-checker-math/partition_function.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/partition_function" - -#include "../../code/comb/gen_partition.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_partition(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/partition_function.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/partition_function.pmtt-ds.test.cpp deleted file mode 100644 index 1e3ce4be8..000000000 --- a/src/test_cpverifier/library-checker-math/partition_function.pmtt-ds.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/partition_function" - -#include "../../code/comb/gen_partition.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_partition(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/partition_function.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/partition_function.pmtt-ss.test.cpp deleted file mode 100644 index aa9986efa..000000000 --- a/src/test_cpverifier/library-checker-math/partition_function.pmtt-ss.test.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/partition_function" - -#include "../../code/comb/gen_partition.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_partition(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/partition_function.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/partition_function.pntt-ss.test.cpp deleted file mode 100644 index d8619abc2..000000000 --- a/src/test_cpverifier/library-checker-math/partition_function.pntt-ss.test.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/partition_function" - -#include "../../code/comb/gen_partition.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_partition(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 16030b0b8..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_composite_set_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/comp_fpssps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 m, n; - tifa_libs::fin >> m >> n; - poly a(m); - tifa_libs::fin >> a.data(); - vec b(1 << n); - for (auto &i : b) tifa_libs::fin >> i; - tifa_libs::fout << tifa_libs::math::comp_fpssps(n, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 558f4caef..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_composite_set_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/comp_fpssps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 m, n; - tifa_libs::fin >> m >> n; - poly a(m); - tifa_libs::fin >> a.data(); - vec b(1 << n); - for (auto &i : b) tifa_libs::fin >> i; - tifa_libs::fout << tifa_libs::math::comp_fpssps(n, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s63-d31.test.cpp similarity index 77% rename from src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s63-d31.test.cpp index acbbf5c9a..28db4a14c 100644 --- a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s63-d63.test.cpp similarity index 77% rename from src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s63-d63.test.cpp index 0d912ff0c..ae1919c93 100644 --- a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s63-s30.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s63-s30.test.cpp index 240140aff..5c896f511 100644 --- a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s63-s63.test.cpp similarity index 77% rename from src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s63-s63.test.cpp index e1f1ca556..eb7e6090a 100644 --- a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 4f1e3b082..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_composite_set_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/comp_fpssps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 m, n; - tifa_libs::fin >> m >> n; - poly a(m); - tifa_libs::fin >> a.data(); - vec b(1 << n); - for (auto &i : b) tifa_libs::fin >> i; - tifa_libs::fout << tifa_libs::math::comp_fpssps(n, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 737a944f8..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_composite_set_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/comp_fpssps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 m, n; - tifa_libs::fin >> m >> n; - poly a(m); - tifa_libs::fin >> a.data(); - vec b(1 << n); - for (auto &i : b) tifa_libs::fin >> i; - tifa_libs::fout << tifa_libs::math::comp_fpssps(n, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.pmtt-ds.test.cpp deleted file mode 100644 index fa9243820..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.pmtt-ds.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_composite_set_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/comp_fpssps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 m, n; - tifa_libs::fin >> m >> n; - poly a(m); - tifa_libs::fin >> a.data(); - vec b(1 << n); - for (auto &i : b) tifa_libs::fin >> i; - tifa_libs::fout << tifa_libs::math::comp_fpssps(n, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.pmtt-ss.test.cpp deleted file mode 100644 index 5919c9961..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.pmtt-ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_composite_set_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/comp_fpssps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 m, n; - tifa_libs::fin >> m >> n; - poly a(m); - tifa_libs::fin >> a.data(); - vec b(1 << n); - for (auto &i : b) tifa_libs::fin >> i; - tifa_libs::fout << tifa_libs::math::comp_fpssps(n, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.pntt-ss.test.cpp deleted file mode 100644 index 76435cd69..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_composite_set_power_series.pntt-ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_composite_set_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/comp_fpssps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 m, n; - tifa_libs::fin >> m >> n; - poly a(m); - tifa_libs::fin >> a.data(); - vec b(1 << n); - for (auto &i : b) tifa_libs::fin >> i; - tifa_libs::fout << tifa_libs::math::comp_fpssps(n, a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s30-ds.test.cpp deleted file mode 100644 index d202560b5..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_interpolation" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/interp_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly a(n), b(n); - tifa_libs::fin >> a.data() >> b.data(); - tifa_libs::fout << tifa_libs::math::interp_fps(a, b).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 958a88e8f..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_interpolation" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/interp_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly a(n), b(n); - tifa_libs::fin >> a.data() >> b.data(); - tifa_libs::fout << tifa_libs::math::interp_fps(a, b).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s63-d31.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s63-d31.test.cpp index 12bd7387f..926b6200e 100644 --- a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s63-d63.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s63-d63.test.cpp index 4d5f17aae..ed012f3f6 100644 --- a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s63-s30.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s63-s30.test.cpp index fea031eda..74e754def 100644 --- a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s63-s63.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s63-s63.test.cpp index 49f2d2af6..14d07ba75 100644 --- a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-ds.test.cpp deleted file mode 100644 index aaef23230..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_interpolation" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/interp_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly a(n), b(n); - tifa_libs::fin >> a.data() >> b.data(); - tifa_libs::fout << tifa_libs::math::interp_fps(a, b).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-ss.test.cpp deleted file mode 100644 index adef06cb8..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_interpolation.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_interpolation" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/interp_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly a(n), b(n); - tifa_libs::fin >> a.data() >> b.data(); - tifa_libs::fout << tifa_libs::math::interp_fps(a, b).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_interpolation.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_interpolation.pmtt-ds.test.cpp deleted file mode 100644 index e0cf3ac5c..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_interpolation.pmtt-ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_interpolation" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/interp_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly a(n), b(n); - tifa_libs::fin >> a.data() >> b.data(); - tifa_libs::fout << tifa_libs::math::interp_fps(a, b).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_interpolation.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_interpolation.pmtt-ss.test.cpp deleted file mode 100644 index cdad8dff9..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_interpolation.pmtt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_interpolation" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/interp_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly a(n), b(n); - tifa_libs::fin >> a.data() >> b.data(); - tifa_libs::fout << tifa_libs::math::interp_fps(a, b).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_interpolation.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_interpolation.pntt-ss.test.cpp deleted file mode 100644 index 3e80c3705..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_interpolation.pntt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_interpolation" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/interp_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly a(n), b(n); - tifa_libs::fin >> a.data() >> b.data(); - tifa_libs::fout << tifa_libs::math::interp_fps(a, b).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 913625b03..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_taylor_shift" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/tsh_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - mint c; - tifa_libs::fin >> n >> c; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::tsh_fps(a, c).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 8bf9a845e..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_taylor_shift" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/tsh_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - mint c; - tifa_libs::fin >> n >> c; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::tsh_fps(a, c).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s63-d31.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s63-d31.test.cpp index b588cdfb8..da2f870a5 100644 --- a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s63-d63.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s63-d63.test.cpp index 148b0c5be..393187c9c 100644 --- a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s63-s30.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s63-s30.test.cpp index 952675aac..7a755d7b5 100644 --- a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s63-s63.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s63-s63.test.cpp index ad1987ed8..c71ea7096 100644 --- a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 7fd91c154..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_taylor_shift" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/tsh_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - mint c; - tifa_libs::fin >> n >> c; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::tsh_fps(a, c).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 272c1bb53..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_taylor_shift" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/tsh_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - mint c; - tifa_libs::fin >> n >> c; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::tsh_fps(a, c).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.pmtt-ds.test.cpp deleted file mode 100644 index 61aec1044..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.pmtt-ds.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_taylor_shift" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/tsh_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n; - mint c; - tifa_libs::fin >> n >> c; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::tsh_fps(a, c).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.pmtt-ss.test.cpp deleted file mode 100644 index c8b417a15..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.pmtt-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_taylor_shift" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/tsh_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n; - mint c; - tifa_libs::fin >> n >> c; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::tsh_fps(a, c).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.pntt-ss.test.cpp deleted file mode 100644 index 4060c62ee..000000000 --- a/src/test_cpverifier/library-checker-math/polynomial_taylor_shift.pntt-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/polynomial_taylor_shift" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/tsh_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n; - mint c; - tifa_libs::fin >> n >> c; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::tsh_fps(a, c).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s30-ds.test.cpp deleted file mode 100644 index a4745f924..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/pow_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - u64 m; - tifa_libs::fin >> n >> m; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::pow_fps(a, m).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 4ca3daeb8..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/pow_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - u64 m; - tifa_libs::fin >> n >> m; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::pow_fps(a, m).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s63-d31.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s63-d31.test.cpp index fb876286b..15ad9ff42 100644 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s63-d63.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s63-d63.test.cpp index 7193b82be..10f579f74 100644 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s63-s30.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s63-s30.test.cpp index cc1de97f5..c94ca37ff 100644 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s63-s63.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s63-s63.test.cpp index ba3856e76..a280f08d8 100644 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-ds.test.cpp deleted file mode 100644 index dcf34956f..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/pow_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - u64 m; - tifa_libs::fin >> n >> m; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::pow_fps(a, m).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 5bafea0b8..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/pow_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - u64 m; - tifa_libs::fin >> n >> m; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::pow_fps(a, m).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.pmtt-ds.test.cpp deleted file mode 100644 index f80fee83c..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.pmtt-ds.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/pow_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n; - u64 m; - tifa_libs::fin >> n >> m; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::pow_fps(a, m).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.pmtt-ss.test.cpp deleted file mode 100644 index 934fa0590..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.pmtt-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/pow_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n; - u64 m; - tifa_libs::fin >> n >> m; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::pow_fps(a, m).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.pntt-ss.test.cpp deleted file mode 100644 index 2d6cd2791..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series.pntt-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/pow_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n; - u64 m; - tifa_libs::fin >> n >> m; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::pow_fps(a, m).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s30-ds.test.cpp deleted file mode 100644 index e0cf87281..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/pow_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - u64 m; - tifa_libs::fin >> n >> k >> m; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::pow_fpssp(p, m).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s30-ss.test.cpp deleted file mode 100644 index a994b76e2..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/pow_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, k; - u64 m; - tifa_libs::fin >> n >> k >> m; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::pow_fpssp(p, m).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s63-d31.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s63-d31.test.cpp index 9f5ca93f1..5c646224b 100644 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s63-d63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s63-d63.test.cpp index aab95d4d2..5d093d9e2 100644 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s63-s30.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s63-s30.test.cpp index 23608e156..c31f0d186 100644 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s63-s63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s63-s63.test.cpp index 78b101175..21e3b421f 100644 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 6aa233b6f..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/pow_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - u64 m; - tifa_libs::fin >> n >> k >> m; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::pow_fpssp(p, m).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-ss.test.cpp deleted file mode 100644 index f08a67f55..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/pow_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, k; - u64 m; - tifa_libs::fin >> n >> k >> m; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::pow_fpssp(p, m).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.pmtt-ds.test.cpp deleted file mode 100644 index 70702dad6..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.pmtt-ds.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/pow_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - u64 m; - tifa_libs::fin >> n >> k >> m; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::pow_fpssp(p, m).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.pmtt-ss.test.cpp deleted file mode 100644 index a319994d9..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.pmtt-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/pow_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n, k; - u64 m; - tifa_libs::fin >> n >> k >> m; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::pow_fpssp(p, m).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.pntt-ss.test.cpp deleted file mode 100644 index f036a62a0..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_formal_power_series_sparse.pntt-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_formal_power_series_sparse" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/pow_fpssp.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n, k; - u64 m; - tifa_libs::fin >> n >> k >> m; - poly p(n); - for (u32 i = 0, x; i < k; ++i) tifa_libs::fin >> x >> p[x]; - tifa_libs::fout << tifa_libs::math::pow_fpssp(p, m).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_matrix.ds.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_matrix.ds.test.cpp deleted file mode 100644 index 905feec01..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_matrix.ds.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_matrix" - -#include "../../code/lalg/mat.hpp" -#include "../../code/lalg/pow_mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mat = tifa_libs::math::matrix; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u64 n, k; - std::cin >> n >> k; - mat a(n, n); - std::cin >> a; - std::cout << tifa_libs::math::pow(a, k); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/pow_of_matrix.ss.test.cpp b/src/test_cpverifier/library-checker-math/pow_of_matrix.ss.test.cpp deleted file mode 100644 index 7d4262898..000000000 --- a/src/test_cpverifier/library-checker-math/pow_of_matrix.ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/pow_of_matrix" - -#include "../../code/lalg/mat.hpp" -#include "../../code/lalg/pow_mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using mat = tifa_libs::math::matrix; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u64 n, k; - std::cin >> n >> k; - mat a(n, n); - std::cin >> a; - std::cout << tifa_libs::math::pow(a, k); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s30-ds.test.cpp deleted file mode 100644 index bc7181a5a..000000000 --- a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sharp_p_subset_sum" - -#include "../../code/io/fastio.hpp" -#include "../../code/math/ssts_pim_cnt.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, t; - tifa_libs::fin >> n >> t; - vecu s(n); - tifa_libs::fin >> s; - auto v = tifa_libs::math::ssts_pim_cnt(s, t).data(); - fle_ (u32, i, 1, t) tifa_libs::fout.write(v[i]).space_if(i != t); - tifa_libs::fout.linebreak(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 75d4bf832..000000000 --- a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sharp_p_subset_sum" - -#include "../../code/io/fastio.hpp" -#include "../../code/math/ssts_pim_cnt.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, t; - tifa_libs::fin >> n >> t; - vecu s(n); - tifa_libs::fin >> s; - auto v = tifa_libs::math::ssts_pim_cnt(s, t).data(); - fle_ (u32, i, 1, t) tifa_libs::fout.write(v[i]).space_if(i != t); - tifa_libs::fout.linebreak(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s63-d31.test.cpp similarity index 77% rename from src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s63-d31.test.cpp index 7bc128899..d844160dc 100644 --- a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s63-d63.test.cpp similarity index 77% rename from src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s63-d63.test.cpp index 72327fb31..d1dcdfc94 100644 --- a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s63-s30.test.cpp similarity index 77% rename from src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s63-s30.test.cpp index a54481d4f..8948b6eea 100644 --- a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s63-s63.test.cpp similarity index 77% rename from src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s63-s63.test.cpp index bc0799966..a9cb7a831 100644 --- a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 0b6fa4f8e..000000000 --- a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sharp_p_subset_sum" - -#include "../../code/io/fastio.hpp" -#include "../../code/math/ssts_pim_cnt.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, t; - tifa_libs::fin >> n >> t; - vecu s(n); - tifa_libs::fin >> s; - auto v = tifa_libs::math::ssts_pim_cnt(s, t).data(); - fle_ (u32, i, 1, t) tifa_libs::fout.write(v[i]).space_if(i != t); - tifa_libs::fout.linebreak(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-ss.test.cpp deleted file mode 100644 index f9f32d48b..000000000 --- a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sharp_p_subset_sum" - -#include "../../code/io/fastio.hpp" -#include "../../code/math/ssts_pim_cnt.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, t; - tifa_libs::fin >> n >> t; - vecu s(n); - tifa_libs::fin >> s; - auto v = tifa_libs::math::ssts_pim_cnt(s, t).data(); - fle_ (u32, i, 1, t) tifa_libs::fout.write(v[i]).space_if(i != t); - tifa_libs::fout.linebreak(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.pmtt-ds.test.cpp deleted file mode 100644 index 60243d165..000000000 --- a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.pmtt-ds.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sharp_p_subset_sum" - -#include "../../code/io/fastio.hpp" -#include "../../code/math/ssts_pim_cnt.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n, t; - tifa_libs::fin >> n >> t; - vecu s(n); - tifa_libs::fin >> s; - auto v = tifa_libs::math::ssts_pim_cnt(s, t).data(); - fle_ (u32, i, 1, t) tifa_libs::fout.write(v[i]).space_if(i != t); - tifa_libs::fout.linebreak(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.pmtt-ss.test.cpp deleted file mode 100644 index 05acbfc01..000000000 --- a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.pmtt-ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sharp_p_subset_sum" - -#include "../../code/io/fastio.hpp" -#include "../../code/math/ssts_pim_cnt.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n, t; - tifa_libs::fin >> n >> t; - vecu s(n); - tifa_libs::fin >> s; - auto v = tifa_libs::math::ssts_pim_cnt(s, t).data(); - fle_ (u32, i, 1, t) tifa_libs::fout.write(v[i]).space_if(i != t); - tifa_libs::fout.linebreak(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.pntt-ss.test.cpp deleted file mode 100644 index e04c7c7ee..000000000 --- a/src/test_cpverifier/library-checker-math/sharp_p_subset_sum.pntt-ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sharp_p_subset_sum" - -#include "../../code/io/fastio.hpp" -#include "../../code/math/ssts_pim_cnt.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n, t; - tifa_libs::fin >> n >> t; - vecu s(n); - tifa_libs::fin >> s; - auto v = tifa_libs::math::ssts_pim_cnt(s, t).data(); - fle_ (u32, i, 1, t) tifa_libs::fout.write(v[i]).space_if(i != t); - tifa_libs::fout.linebreak(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s30-ds.test.cpp deleted file mode 100644 index f6f48029d..000000000 --- a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/shift_of_sampling_points_of_polynomial" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ctsh_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, m, c; - tifa_libs::fin >> n >> m >> c; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::ctsh_fps(a, mint(c), m).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 7a7992e5e..000000000 --- a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/shift_of_sampling_points_of_polynomial" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ctsh_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, m, c; - tifa_libs::fin >> n >> m >> c; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::ctsh_fps(a, mint(c), m).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s63-d31.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s63-d31.test.cpp index 94b3bccaa..37d2ff89f 100644 --- a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s63-d63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s63-d63.test.cpp index 26a0d960c..2e21ea07c 100644 --- a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s63-s30.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s63-s30.test.cpp index 4798974db..5a32e24b3 100644 --- a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s63-s63.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s63-s63.test.cpp index 5891fd2a9..2b4855159 100644 --- a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-ds.test.cpp deleted file mode 100644 index b39b93664..000000000 --- a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/shift_of_sampling_points_of_polynomial" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ctsh_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, m, c; - tifa_libs::fin >> n >> m >> c; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::ctsh_fps(a, mint(c), m).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 608029511..000000000 --- a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/shift_of_sampling_points_of_polynomial" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ctsh_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, m, c; - tifa_libs::fin >> n >> m >> c; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::ctsh_fps(a, mint(c), m).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.pmtt-ds.test.cpp deleted file mode 100644 index a140e6f02..000000000 --- a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.pmtt-ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/shift_of_sampling_points_of_polynomial" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ctsh_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n, m, c; - tifa_libs::fin >> n >> m >> c; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::ctsh_fps(a, mint(c), m).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.pmtt-ss.test.cpp deleted file mode 100644 index 805262295..000000000 --- a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.pmtt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/shift_of_sampling_points_of_polynomial" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ctsh_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n, m, c; - tifa_libs::fin >> n >> m >> c; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::ctsh_fps(a, mint(c), m).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.pntt-ss.test.cpp deleted file mode 100644 index 6aac5dc71..000000000 --- a/src/test_cpverifier/library-checker-math/shift_of_sampling_points_of_polynomial.pntt-ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/shift_of_sampling_points_of_polynomial" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/ctsh_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n, m, c; - tifa_libs::fin >> n >> m >> c; - poly a(n); - tifa_libs::fin >> a.data(); - tifa_libs::fout << tifa_libs::math::ctsh_fps(a, mint(c), m).data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sparse_matrix_det.ds.test.cpp b/src/test_cpverifier/library-checker-math/sparse_matrix_det.ds.test.cpp deleted file mode 100644 index f22a376ab..000000000 --- a/src/test_cpverifier/library-checker-math/sparse_matrix_det.ds.test.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sparse_matrix_det" - -#include "../../code/lalg/det_rd_mat.hpp" -#include "../../code/lalg/matsp.hpp" -#include "../../code/rand/gen.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mat = tifa_libs::math::matsp; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u64 n, k; - std::cin >> n >> k; - mat a(n, n); - for (u64 i = 0, x, y, z; i < k; ++i) { - std::cin >> x >> y >> z; - a(x, y) = z; - } - auto is0 = [](cT_(mint) x) { return x.val() == 0; }; - tifa_libs::rand::Gen> gen(1, mint::mod() - 1); - std::cout << tifa_libs::math::det_rd(a, gen, is0) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sparse_matrix_det.ss.test.cpp b/src/test_cpverifier/library-checker-math/sparse_matrix_det.ss.test.cpp deleted file mode 100644 index ce4e6eb75..000000000 --- a/src/test_cpverifier/library-checker-math/sparse_matrix_det.ss.test.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sparse_matrix_det" - -#include "../../code/lalg/det_rd_mat.hpp" -#include "../../code/lalg/matsp.hpp" -#include "../../code/rand/gen.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using mat = tifa_libs::math::matsp; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u64 n, k; - std::cin >> n >> k; - mat a(n, n); - for (u64 i = 0, x, y, z; i < k; ++i) { - std::cin >> x >> y >> z; - a(x, y) = z; - } - auto is0 = [](cT_(mint) x) { return x.val() == 0; }; - tifa_libs::rand::Gen> gen(1, mint::mod() - 1); - std::cout << tifa_libs::math::det_rd(a, gen, is0) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 5cb6d10b2..000000000 --- a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sqrt_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/sqrt_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - auto res = tifa_libs::math::sqrt_fps(p); - if (!res.has_value()) tifa_libs::fout << "-1\n"; - else tifa_libs::fout << res.value().data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 351dfdb84..000000000 --- a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sqrt_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/sqrt_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - auto res = tifa_libs::math::sqrt_fps(p); - if (!res.has_value()) tifa_libs::fout << "-1\n"; - else tifa_libs::fout << res.value().data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s63-d31.test.cpp similarity index 77% rename from src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s63-d31.test.cpp index ae5897207..23480e183 100644 --- a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s63-d63.test.cpp similarity index 77% rename from src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s63-d63.test.cpp index bc9b967ba..481ca11ac 100644 --- a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s63-s30.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s63-s30.test.cpp index 87e70e929..e37bad012 100644 --- a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s63-s63.test.cpp similarity index 77% rename from src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s63-s63.test.cpp index a0f8c5d56..d7c2f1bd7 100644 --- a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-ds.test.cpp deleted file mode 100644 index dada46073..000000000 --- a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sqrt_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/sqrt_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - auto res = tifa_libs::math::sqrt_fps(p); - if (!res.has_value()) tifa_libs::fout << "-1\n"; - else tifa_libs::fout << res.value().data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 936b5b828..000000000 --- a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sqrt_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/sqrt_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - auto res = tifa_libs::math::sqrt_fps(p); - if (!res.has_value()) tifa_libs::fout << "-1\n"; - else tifa_libs::fout << res.value().data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.pmtt-ds.test.cpp deleted file mode 100644 index f49c98e4f..000000000 --- a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.pmtt-ds.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sqrt_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/sqrt_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - auto res = tifa_libs::math::sqrt_fps(p); - if (!res.has_value()) tifa_libs::fout << "-1\n"; - else tifa_libs::fout << res.value().data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.pmtt-ss.test.cpp deleted file mode 100644 index a649007ea..000000000 --- a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.pmtt-ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sqrt_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/sqrt_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - auto res = tifa_libs::math::sqrt_fps(p); - if (!res.has_value()) tifa_libs::fout << "-1\n"; - else tifa_libs::fout << res.value().data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.pntt-ss.test.cpp deleted file mode 100644 index 8eb527621..000000000 --- a/src/test_cpverifier/library-checker-math/sqrt_of_formal_power_series.pntt-ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sqrt_of_formal_power_series" - -#include "../../code/io/fastio.hpp" -#include "../../code/poly/sqrt_fps.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - poly p(n); - tifa_libs::fin >> p.data(); - auto res = tifa_libs::math::sqrt_fps(p); - if (!res.has_value()) tifa_libs::fout << "-1\n"; - else tifa_libs::fout << res.value().data() << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s30-ds.test.cpp deleted file mode 100644 index e88b9ec4b..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind" - -#include "../../code/comb/gen_stirling1_row.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_stirling1_row(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s30-ss.test.cpp deleted file mode 100644 index e9421d1a0..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind" - -#include "../../code/comb/gen_stirling1_row.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_stirling1_row(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s63-d31.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s63-d31.test.cpp index 05d691282..75f5ca58c 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s63-d63.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s63-d63.test.cpp index 1d597604e..cca5ce76e 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s63-s30.test.cpp similarity index 73% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s63-s30.test.cpp index 8260578a0..69b5cb649 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s63-s63.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s63-s63.test.cpp index 72c00e682..5fdf20df4 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 3d74c52cd..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind" - -#include "../../code/comb/gen_stirling1_row.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_stirling1_row(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 71790f367..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind" - -#include "../../code/comb/gen_stirling1_row.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_stirling1_row(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.pmtt-ds.test.cpp deleted file mode 100644 index 547f5a771..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.pmtt-ds.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind" - -#include "../../code/comb/gen_stirling1_row.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_stirling1_row(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.pmtt-ss.test.cpp deleted file mode 100644 index d839fba91..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.pmtt-ss.test.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind" - -#include "../../code/comb/gen_stirling1_row.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_stirling1_row(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.pntt-ss.test.cpp deleted file mode 100644 index 19525cece..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind.pntt-ss.test.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind" - -#include "../../code/comb/gen_stirling1_row.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_stirling1_row(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 45e2b052c..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind_fixed_k" - -#include "../../code/comb/gen_stirling1_col.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - auto ans = tifa_libs::math::gen_stirling1_col(n, k); - fle_ (u32, i, k, n) tifa_libs::fout << ans[i] << " \n"[i == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 35a3ae074..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind_fixed_k" - -#include "../../code/comb/gen_stirling1_col.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - auto ans = tifa_libs::math::gen_stirling1_col(n, k); - fle_ (u32, i, k, n) tifa_libs::fout << ans[i] << " \n"[i == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s63-d31.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s63-d31.test.cpp index c735aaa97..b161a2842 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s63-d63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s63-d63.test.cpp index abe5c438b..53b085b2d 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s63-s30.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s63-s30.test.cpp index 3b4dcc92f..091a052c9 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s63-s63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s63-s63.test.cpp index ef48c90e7..2032fa3c6 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 6092f5da5..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind_fixed_k" - -#include "../../code/comb/gen_stirling1_col.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - auto ans = tifa_libs::math::gen_stirling1_col(n, k); - fle_ (u32, i, k, n) tifa_libs::fout << ans[i] << " \n"[i == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-ss.test.cpp deleted file mode 100644 index a00154b08..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind_fixed_k" - -#include "../../code/comb/gen_stirling1_col.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - auto ans = tifa_libs::math::gen_stirling1_col(n, k); - fle_ (u32, i, k, n) tifa_libs::fout << ans[i] << " \n"[i == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.pmtt-ds.test.cpp deleted file mode 100644 index 819dc3f04..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.pmtt-ds.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind_fixed_k" - -#include "../../code/comb/gen_stirling1_col.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - auto ans = tifa_libs::math::gen_stirling1_col(n, k); - fle_ (u32, i, k, n) tifa_libs::fout << ans[i] << " \n"[i == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.pmtt-ss.test.cpp deleted file mode 100644 index c2fb6cb01..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.pmtt-ss.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind_fixed_k" - -#include "../../code/comb/gen_stirling1_col.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - auto ans = tifa_libs::math::gen_stirling1_col(n, k); - fle_ (u32, i, k, n) tifa_libs::fout << ans[i] << " \n"[i == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.pntt-ss.test.cpp deleted file mode 100644 index fc72d5044..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_fixed_k.pntt-ss.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind_fixed_k" - -#include "../../code/comb/gen_stirling1_col.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - auto ans = tifa_libs::math::gen_stirling1_col(n, k); - fle_ (u32, i, k, n) tifa_libs::fout << ans[i] << " \n"[i == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_small_p_large_n.ds.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_small_p_large_n.ds.test.cpp deleted file mode 100644 index 58ff5e179..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_first_kind_small_p_large_n.ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_first_kind_small_p_large_n" - -#include "../../code/comb/stirling1_smallp.hpp" -// -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 t, MOD; - std::cin >> t >> MOD; - mint::set_mod(MOD); - tifa_libs::math::Stirling1 s; - while (t--) { - u64 n, k; - std::cin >> n >> k; - std::cout << s(n, k) << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s30-ds.test.cpp deleted file mode 100644 index 11d7e2d5b..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind" - -#include "../../code/comb/gen_stirling2_row.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_stirling2_row(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s30-ss.test.cpp deleted file mode 100644 index 23c1b144b..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind" - -#include "../../code/comb/gen_stirling2_row.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_stirling2_row(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s63-d31.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s63-d31.test.cpp index 25022fbeb..25f6a1d10 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s63-d63.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s63-d63.test.cpp index 5bb49f76d..8898ebb47 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s63-s30.test.cpp similarity index 73% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s63-s30.test.cpp index 0f395e23d..dad58ffa9 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s63-s63.test.cpp similarity index 74% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s63-s63.test.cpp index f962af4b5..ac5a195f4 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 92727354d..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind" - -#include "../../code/comb/gen_stirling2_row.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_stirling2_row(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-ss.test.cpp deleted file mode 100644 index 70b26ea13..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind" - -#include "../../code/comb/gen_stirling2_row.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_stirling2_row(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.pmtt-ds.test.cpp deleted file mode 100644 index 886df7e5d..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.pmtt-ds.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind" - -#include "../../code/comb/gen_stirling2_row.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_stirling2_row(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.pmtt-ss.test.cpp deleted file mode 100644 index b3d4204c1..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.pmtt-ss.test.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind" - -#include "../../code/comb/gen_stirling2_row.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_stirling2_row(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.pntt-ss.test.cpp deleted file mode 100644 index 9e64f9810..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind.pntt-ss.test.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind" - -#include "../../code/comb/gen_stirling2_row.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n; - tifa_libs::fin >> n; - tifa_libs::fout << tifa_libs::math::gen_stirling2_row(n).data(); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s30-ds.test.cpp deleted file mode 100644 index bd2bcdbe0..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind_fixed_k" - -#include "../../code/comb/gen_stirling2_col.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - auto ans = tifa_libs::math::gen_stirling2_col(n, k); - fle_ (u32, i, k, n) tifa_libs::fout << ans[i] << " \n"[i == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s30-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s30-ss.test.cpp deleted file mode 100644 index fc4226d01..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind_fixed_k" - -#include "../../code/comb/gen_stirling2_col.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - auto ans = tifa_libs::math::gen_stirling2_col(n, k); - fle_ (u32, i, k, n) tifa_libs::fout << ans[i] << " \n"[i == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s63-d31.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s63-d31.test.cpp index 9f0e75c16..c60f197d9 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s63-d31.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s63-d63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s63-d63.test.cpp index 1d7bf02ef..ce7add8ee 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s63-d63.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-s30.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s63-s30.test.cpp similarity index 75% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s63-s30.test.cpp index e6e751124..6fc554fa6 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s63-s30.test.cpp @@ -7,13 +7,13 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-s63.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s63-s63.test.cpp similarity index 76% rename from src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s63-s63.test.cpp index 9a334f3b9..1e660b232 100644 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-s63-s63.test.cpp @@ -7,13 +7,12 @@ CEXP u32 MOD = 998244353; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-ds.test.cpp deleted file mode 100644 index b7e165a3d..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind_fixed_k" - -#include "../../code/comb/gen_stirling2_col.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - auto ans = tifa_libs::math::gen_stirling2_col(n, k); - fle_ (u32, i, k, n) tifa_libs::fout << ans[i] << " \n"[i == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-ss.test.cpp deleted file mode 100644 index bda6dfff7..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind_fixed_k" - -#include "../../code/comb/gen_stirling2_col.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - auto ans = tifa_libs::math::gen_stirling2_col(n, k); - fle_ (u32, i, k, n) tifa_libs::fout << ans[i] << " \n"[i == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.pmtt-ds.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.pmtt-ds.test.cpp deleted file mode 100644 index fccdff5aa..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.pmtt-ds.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind_fixed_k" - -#include "../../code/comb/gen_stirling2_col.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - u32 n, k; - tifa_libs::fin >> n >> k; - auto ans = tifa_libs::math::gen_stirling2_col(n, k); - fle_ (u32, i, k, n) tifa_libs::fout << ans[i] << " \n"[i == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.pmtt-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.pmtt-ss.test.cpp deleted file mode 100644 index 9899470c4..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.pmtt-ss.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind_fixed_k" - -#include "../../code/comb/gen_stirling2_col.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - auto ans = tifa_libs::math::gen_stirling2_col(n, k); - fle_ (u32, i, k, n) tifa_libs::fout << ans[i] << " \n"[i == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.pntt-ss.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.pntt-ss.test.cpp deleted file mode 100644 index 152b2ce59..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_fixed_k.pntt-ss.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind_fixed_k" - -#include "../../code/comb/gen_stirling2_col.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - u32 n, k; - tifa_libs::fin >> n >> k; - auto ans = tifa_libs::math::gen_stirling2_col(n, k); - fle_ (u32, i, k, n) tifa_libs::fout << ans[i] << " \n"[i == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_small_p_large_n.ds.test.cpp b/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_small_p_large_n.ds.test.cpp deleted file mode 100644 index d5315a746..000000000 --- a/src/test_cpverifier/library-checker-math/stirling_number_of_the_second_kind_small_p_large_n.ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/stirling_number_of_the_second_kind_small_p_large_n" - -#include "../../code/comb/stirling2_smallp.hpp" -// -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 t, MOD; - std::cin >> t >> MOD; - mint::set_mod(MOD); - tifa_libs::math::Stirling2 S; - while (t--) { - u64 n, k; - std::cin >> n >> k; - std::cout << S(n, k) << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/subset_convolution.ds.test.cpp b/src/test_cpverifier/library-checker-math/subset_convolution.ds.test.cpp deleted file mode 100644 index 94601e491..000000000 --- a/src/test_cpverifier/library-checker-math/subset_convolution.ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/subset_convolution" - -#include "../../code/conv/conv_subset.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - u32 n; - tifa_libs::fin >> n; - vec a(1 << n), b(1 << n); - for (auto &i : a) tifa_libs::fin >> i; - for (auto &i : b) tifa_libs::fin >> i; - tifa_libs::math::conv_subset cvs; - tifa_libs::fout << cvs.conv(a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/subset_convolution.ss.test.cpp b/src/test_cpverifier/library-checker-math/subset_convolution.ss.test.cpp deleted file mode 100644 index 877c40420..000000000 --- a/src/test_cpverifier/library-checker-math/subset_convolution.ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/subset_convolution" - -#include "../../code/conv/conv_subset.hpp" -#include "../../code/io/fastio.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - u32 n; - tifa_libs::fin >> n; - vec a(1 << n), b(1 << n); - for (auto &i : a) tifa_libs::fin >> i; - for (auto &i : b) tifa_libs::fin >> i; - tifa_libs::math::conv_subset cvs; - tifa_libs::fout << cvs.conv(a, b) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sum_of_exponential_times_polynomial.ds.test.cpp b/src/test_cpverifier/library-checker-math/sum_of_exponential_times_polynomial.ds.test.cpp deleted file mode 100644 index a5a6085b0..000000000 --- a/src/test_cpverifier/library-checker-math/sum_of_exponential_times_polynomial.ds.test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sum_of_exponential_times_polynomial" - -#include "../../code/comb/gen_pows.hpp" -#include "../../code/math/sum_ipaf.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 r, d; - u64 n; - std::cin >> r >> d >> n; - auto p = tifa_libs::math::gen_pows(d + 1, d); - std::cout << tifa_libs::math::sum_ipaf(p, mint(r), n); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sum_of_exponential_times_polynomial.ss.test.cpp b/src/test_cpverifier/library-checker-math/sum_of_exponential_times_polynomial.ss.test.cpp deleted file mode 100644 index ae05f80d5..000000000 --- a/src/test_cpverifier/library-checker-math/sum_of_exponential_times_polynomial.ss.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sum_of_exponential_times_polynomial" - -#include "../../code/comb/gen_pows.hpp" -#include "../../code/math/sum_ipaf.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 r, d; - u64 n; - std::cin >> r >> d >> n; - auto p = tifa_libs::math::gen_pows(d + 1, d); - std::cout << tifa_libs::math::sum_ipaf(p, mint(r), n); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sum_of_exponential_times_polynomial_limit.ds.test.cpp b/src/test_cpverifier/library-checker-math/sum_of_exponential_times_polynomial_limit.ds.test.cpp deleted file mode 100644 index 628bab8e2..000000000 --- a/src/test_cpverifier/library-checker-math/sum_of_exponential_times_polynomial_limit.ds.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sum_of_exponential_times_polynomial_limit" - -#include "../../code/comb/gen_pows.hpp" -#include "../../code/math/series_ipaf.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 r, d; - std::cin >> r >> d; - auto p = tifa_libs::math::gen_pows(d + 1, d); - std::cout << tifa_libs::math::series_ipaf(p, mint(r)); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sum_of_exponential_times_polynomial_limit.ss.test.cpp b/src/test_cpverifier/library-checker-math/sum_of_exponential_times_polynomial_limit.ss.test.cpp deleted file mode 100644 index abfddb101..000000000 --- a/src/test_cpverifier/library-checker-math/sum_of_exponential_times_polynomial_limit.ss.test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sum_of_exponential_times_polynomial_limit" - -#include "../../code/comb/gen_pows.hpp" -#include "../../code/math/series_ipaf.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 r, d; - std::cin >> r >> d; - auto p = tifa_libs::math::gen_pows(d + 1, d); - std::cout << tifa_libs::math::series_ipaf(p, mint(r)); - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sum_of_totient_function.du-ls-ds.test.cpp b/src/test_cpverifier/library-checker-math/sum_of_totient_function.du-ls-ds.test.cpp deleted file mode 100644 index d60b7a7a2..000000000 --- a/src/test_cpverifier/library-checker-math/sum_of_totient_function.du-ls-ds.test.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sum_of_totient_function" - -#include "../../code/math/isqrt.hpp" -#include "../../code/nt/du_sieve.hpp" -#include "../../code/nt/lsieve_func.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u64 n; - std::cin >> n; - vec sphi; - { - auto _ = tifa_libs::math::lsieve_func().reset_lsieve_func(tifa_libs::math::isqrt(n)).phi; - sphi.reserve(_.size()); - for (auto i : _) sphi.push_back(i); - std::partial_sum(sphi.begin(), sphi.end(), sphi.begin()); - } - auto sf = [sphi](u64 x) -> mint { return sphi[x]; }; - auto sg = [](u64 x) -> mint { return x; }; - auto sh = [](u64 x) -> mint { return mint{x} * (x + 1) * ((mint::mod() + 1) / 2); }; - std::cout << tifa_libs::math::du_sieve(sphi.size() - 1, sf, sg, sh)(n) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sum_of_totient_function.du-ls-ss.test.cpp b/src/test_cpverifier/library-checker-math/sum_of_totient_function.du-ls-ss.test.cpp deleted file mode 100644 index 4dc80b2f2..000000000 --- a/src/test_cpverifier/library-checker-math/sum_of_totient_function.du-ls-ss.test.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sum_of_totient_function" - -#include "../../code/math/isqrt.hpp" -#include "../../code/nt/du_sieve.hpp" -#include "../../code/nt/lsieve_func.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u64 n; - std::cin >> n; - vec sphi; - { - auto _ = tifa_libs::math::lsieve_func().reset_lsieve_func(tifa_libs::math::isqrt(n)).phi; - sphi.reserve(_.size()); - for (auto i : _) sphi.push_back(i); - std::partial_sum(sphi.begin(), sphi.end(), sphi.begin()); - } - auto sf = [sphi](u64 x) -> mint { return sphi[x]; }; - auto sg = [](u64 x) -> mint { return x; }; - auto sh = [](u64 x) -> mint { return mint{x} * (x + 1) * ((mint::mod() + 1) / 2); }; - std::cout << tifa_libs::math::du_sieve(sphi.size() - 1, sf, sg, sh)(n) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sum_of_totient_function.du-ls2-ds.test.cpp b/src/test_cpverifier/library-checker-math/sum_of_totient_function.du-ls2-ds.test.cpp deleted file mode 100644 index 3b517c562..000000000 --- a/src/test_cpverifier/library-checker-math/sum_of_totient_function.du-ls2-ds.test.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sum_of_totient_function" - -#include "../../code/math/isqrt.hpp" -#include "../../code/nt/du_sieve.hpp" -#include "../../code/nt/lsieve2.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u64 n; - std::cin >> n; - vec sphi; - { - mint lst = 1; - sphi = tifa_libs::math::lsieve2(tifa_libs::math::isqrt(n)).template run([&lst](u32 p, u32 e) { - if (e == 1) return lst = p - 1; - else return lst = lst * p; - }); - std::partial_sum(sphi.begin(), sphi.end(), sphi.begin()); - } - auto sf = [sphi](u64 x) -> mint { return sphi[x]; }; - auto sg = [](u64 x) -> mint { return x; }; - auto sh = [](u64 x) -> mint { return mint{x} * (x + 1) * ((mint::mod() + 1) / 2); }; - std::cout << tifa_libs::math::du_sieve(sphi.size() - 1, sf, sg, sh)(n) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sum_of_totient_function.du-ls2-ss.test.cpp b/src/test_cpverifier/library-checker-math/sum_of_totient_function.du-ls2-ss.test.cpp deleted file mode 100644 index eae76b07a..000000000 --- a/src/test_cpverifier/library-checker-math/sum_of_totient_function.du-ls2-ss.test.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sum_of_totient_function" - -#include "../../code/math/isqrt.hpp" -#include "../../code/nt/du_sieve.hpp" -#include "../../code/nt/lsieve2.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u64 n; - std::cin >> n; - vec sphi; - { - mint lst = 1; - sphi = tifa_libs::math::lsieve2(tifa_libs::math::isqrt(n)).template run([&lst](u32 p, u32 e) { - if (e == 1) return lst = p - 1; - else return lst = lst * p; - }); - std::partial_sum(sphi.begin(), sphi.end(), sphi.begin()); - } - auto sf = [sphi](u64 x) -> mint { return sphi[x]; }; - auto sg = [](u64 x) -> mint { return x; }; - auto sh = [](u64 x) -> mint { return mint{x} * (x + 1) * ((mint::mod() + 1) / 2); }; - std::cout << tifa_libs::math::du_sieve(sphi.size() - 1, sf, sg, sh)(n) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sum_of_totient_function.min25-ds.test.cpp b/src/test_cpverifier/library-checker-math/sum_of_totient_function.min25-ds.test.cpp deleted file mode 100644 index 3abe8c952..000000000 --- a/src/test_cpverifier/library-checker-math/sum_of_totient_function.min25-ds.test.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sum_of_totient_function" - -#include "../../code/nt/min25_sieve.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; - -mint f(u64 p, u64 c) { - u64 res = 1; - while (--c) res = res * p; - return res * (p - 1); -} - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u64 n; - std::cin >> n; - - tifa_libs::math::min25_sieve min25(n); - auto h0 = min25.sum_pk(0), h1 = min25.sum_pk(1); - for (u32 i = 0; i < h1.size(); ++i) h1[i] -= h0[i]; - std::cout << min25.run(h1) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/sum_of_totient_function.min25-ss.test.cpp b/src/test_cpverifier/library-checker-math/sum_of_totient_function.min25-ss.test.cpp deleted file mode 100644 index a4b27830e..000000000 --- a/src/test_cpverifier/library-checker-math/sum_of_totient_function.min25-ss.test.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/sum_of_totient_function" - -#include "../../code/nt/min25_sieve.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; - -mint f(u64 p, u64 c) { - u64 res = 1; - while (--c) res = res * p; - return res * (p - 1); -} - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u64 n; - std::cin >> n; - - tifa_libs::math::min25_sieve min25(n); - auto h0 = min25.sum_pk(0), h1 = min25.sum_pk(1); - for (u32 i = 0; i < h1.size(); ++i) h1[i] -= h0[i]; - std::cout << min25.run(h1) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/system_of_linear_equations.ds.test.cpp b/src/test_cpverifier/library-checker-math/system_of_linear_equations.ds.test.cpp deleted file mode 100644 index dbfc40d24..000000000 --- a/src/test_cpverifier/library-checker-math/system_of_linear_equations.ds.test.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/system_of_linear_equations" - -#include "../../code/lalg/ge_basic_mat.hpp" -#include "../../code/lalg/leqs_solver.hpp" -#include "../../code/lalg/trans_mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ds.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mat = tifa_libs::math::matrix; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, m; - std::cin >> n >> m; - mat a(n, m), b(n, 1); - std::cin >> a >> b; - - auto is_0 = [](cT_(mint) x) { return x.val() == 0; }; - auto ge = [&is_0](mat &m, bool f) { return tifa_libs::math::ge_basic(m, is_0, f); }; - - auto res_ = tifa_libs::math::leqs_solver(a, b, is_0, ge); - if (!res_) - std::cout << "-1\n"; - else { - mat &res = res_.value(); - std::cout << res.col() - 1 << '\n'; - std::cout << tifa_libs::math::transpose(res) << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-math/system_of_linear_equations.ss.test.cpp b/src/test_cpverifier/library-checker-math/system_of_linear_equations.ss.test.cpp deleted file mode 100644 index fd17399c1..000000000 --- a/src/test_cpverifier/library-checker-math/system_of_linear_equations.ss.test.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/system_of_linear_equations" - -#include "../../code/lalg/ge_basic_mat.hpp" -#include "../../code/lalg/leqs_solver.hpp" -#include "../../code/lalg/trans_mat.hpp" - -CEXP u32 MOD = 998244353; - -#include "../../code/math/mint_ss.hpp" - -using mint = tifa_libs::math::mint_ss; -using mat = tifa_libs::math::matrix; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n, m; - std::cin >> n >> m; - mat a(n, m), b(n, 1); - std::cin >> a >> b; - - auto is_0 = [](cT_(mint) x) { return x.val() == 0; }; - auto ge = [&is_0](mat &m, bool f) { return tifa_libs::math::ge_basic(m, is_0, f); }; - - auto res_ = tifa_libs::math::leqs_solver(a, b, is_0, ge); - if (!res_) - std::cout << "-1\n"; - else { - mat &res = res_.value(); - std::cout << res.col() - 1 << '\n'; - std::cout << tifa_libs::math::transpose(res) << '\n'; - } - return 0; -} diff --git a/src/test_cpverifier/library-checker-string/enumerate_palindromes.hashstr2-ds.test.cpp b/src/test_cpverifier/library-checker-string/enumerate_palindromes.hashstr2-ds.test.cpp deleted file mode 100644 index d20c6f70b..000000000 --- a/src/test_cpverifier/library-checker-string/enumerate_palindromes.hashstr2-ds.test.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/enumerate_palindromes" - -#include "../../code/util/util.hpp" -// -CEXP u32 MOD0 = 998244353; -CEXP u32 MOD1 = 1000000007; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/str/hash_substr2.hpp" - -using mint0 = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ds<-2>; -using hashstr = tifa_libs::str::hash_substr2; - -int main() { - mint0::set_mod(MOD0); - mint1::set_mod(MOD1); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - strn s; - std::cin >> s; - { - strn x; - x.reserve(s.size() * 2 + 1); - x.push_back('$'); - for (char c : s) x.push_back(c), x.push_back('$'); - s.swap(x); - } - strn t = s; - std::ranges::reverse(t); - hashstr hs, ht; - hs.set(s), ht.set(t); - u32 n = (u32)s.size(); - vecu ans(n); - flt_ (u32, i, 0, n) { - u32 l = 0, r = tifa_libs::min(i, n - 1 - i) + 1; - while (l + 1 < r) { - u32 m = (l + r) / 2, l_ = i - m, r_ = i + m; - (hs.get(l_, r_ + 1 - l_) == ht.get(n - 1 - r_, r_ + 1 - l_) ? l : r) = m; - } - ans[i] = l; - } - for (u32 i = 1; i < n - 1; ++i) std::cout << ans[i] << " \n"[i + 2 == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-string/enumerate_palindromes.hashstr2-ss.test.cpp b/src/test_cpverifier/library-checker-string/enumerate_palindromes.hashstr2-ss.test.cpp deleted file mode 100644 index c0dddbac9..000000000 --- a/src/test_cpverifier/library-checker-string/enumerate_palindromes.hashstr2-ss.test.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/enumerate_palindromes" - -#include "../../code/util/util.hpp" -// -CEXP u32 MOD0 = 998244353; -CEXP u32 MOD1 = 1000000007; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/str/hash_substr2.hpp" - -using mint0 = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss; -using hashstr = tifa_libs::str::hash_substr2; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - strn s; - std::cin >> s; - { - strn x; - x.reserve(s.size() * 2 + 1); - x.push_back('$'); - for (char c : s) x.push_back(c), x.push_back('$'); - s.swap(x); - } - strn t = s; - std::ranges::reverse(t); - hashstr hs, ht; - hs.set(s), ht.set(t); - u32 n = (u32)s.size(); - vecu ans(n); - flt_ (u32, i, 0, n) { - u32 l = 0, r = tifa_libs::min(i, n - 1 - i) + 1; - while (l + 1 < r) { - u32 m = (l + r) / 2, l_ = i - m, r_ = i + m; - (hs.get(l_, r_ + 1 - l_) == ht.get(n - 1 - r_, r_ + 1 - l_) ? l : r) = m; - } - ans[i] = l; - } - for (u32 i = 1; i < n - 1; ++i) std::cout << ans[i] << " \n"[i + 2 == n]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-string/runenumerate.hashstr2-ds.test.cpp b/src/test_cpverifier/library-checker-string/runenumerate.hashstr2-ds.test.cpp deleted file mode 100644 index f446e6035..000000000 --- a/src/test_cpverifier/library-checker-string/runenumerate.hashstr2-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/runenumerate/" - -#include "../../code/io/fastio.hpp" -#include "../../code/str/run_hash.hpp" -// -CEXP u32 MOD0 = 998244353; -CEXP u32 MOD1 = 1000000007; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/str/hash_substr2.hpp" - -using mint0 = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ds<-2>; -using hashstr = tifa_libs::str::hash_substr2; - -int main() { - mint0::set_mod(MOD0); - mint1::set_mod(MOD1); - strn s; - tifa_libs::fin >> s; - auto res = tifa_libs::str::run_hash(s); - tifa_libs::fout << res.size() << '\n'; - for (auto& i : res) tifa_libs::fout << i << '\n'; - return 0; -} \ No newline at end of file diff --git a/src/test_cpverifier/library-checker-string/runenumerate.hashstr2-ss.test.cpp b/src/test_cpverifier/library-checker-string/runenumerate.hashstr2-ss.test.cpp deleted file mode 100644 index ad6b6c7b2..000000000 --- a/src/test_cpverifier/library-checker-string/runenumerate.hashstr2-ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/runenumerate/" - -#include "../../code/io/fastio.hpp" -#include "../../code/str/run_hash.hpp" -// -CEXP u32 MOD0 = 998244353; -CEXP u32 MOD1 = 1000000007; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/str/hash_substr2.hpp" - -using mint0 = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss; -using hashstr = tifa_libs::str::hash_substr2; - -int main() { - strn s; - tifa_libs::fin >> s; - auto res = tifa_libs::str::run_hash(s); - tifa_libs::fout << res.size() << '\n'; - for (auto& i : res) tifa_libs::fout << i << '\n'; - return 0; -} \ No newline at end of file diff --git a/src/test_cpverifier/library-checker-string/zalgorithm.hashstr2-ds.test.cpp b/src/test_cpverifier/library-checker-string/zalgorithm.hashstr2-ds.test.cpp deleted file mode 100644 index 0fd940587..000000000 --- a/src/test_cpverifier/library-checker-string/zalgorithm.hashstr2-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/zalgorithm" - -#include "../../code/io/fastio.hpp" -#include "../../code/str/lcpf_hash.hpp" -// -CEXP u32 MOD0 = 998244353; -CEXP u32 MOD1 = 1000000007; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/str/hash_substr2.hpp" - -using mint0 = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ds<-2>; -using hashstr = tifa_libs::str::hash_substr2; - -int main() { - mint0::set_mod(MOD0); - mint1::set_mod(MOD1); - strn s; - tifa_libs::fin >> s; - hashstr hs; - hs.set(s); - for (u32 i = 0; i < s.size(); ++i) tifa_libs::fout << tifa_libs::str::lcpf_hash(hs, hs, 0, i) << " \n"[i + 1 == s.size()]; - return 0; -} diff --git a/src/test_cpverifier/library-checker-string/zalgorithm.hashstr2-ss.test.cpp b/src/test_cpverifier/library-checker-string/zalgorithm.hashstr2-ss.test.cpp deleted file mode 100644 index 36f3fe8d4..000000000 --- a/src/test_cpverifier/library-checker-string/zalgorithm.hashstr2-ss.test.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://judge.yosupo.jp/problem/zalgorithm" - -#include "../../code/io/fastio.hpp" -#include "../../code/str/lcpf_hash.hpp" -// -CEXP u32 MOD0 = 998244353; -CEXP u32 MOD1 = 1000000007; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/str/hash_substr2.hpp" - -using mint0 = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss; -using hashstr = tifa_libs::str::hash_substr2; - -int main() { - strn s; - tifa_libs::fin >> s; - hashstr hs; - hs.set(s); - for (u32 i = 0; i < s.size(); ++i) tifa_libs::fout << tifa_libs::str::lcpf_hash(hs, hs, 0, i) << " \n"[i + 1 == s.size()]; - return 0; -} diff --git a/src/test_cpverifier/unit-test/conv/karatsuba.test.cpp b/src/test_cpverifier/unit-test/conv/karatsuba.test.cpp index 096622a1a..987b6959f 100644 --- a/src/test_cpverifier/unit-test/conv/karatsuba.test.cpp +++ b/src/test_cpverifier/unit-test/conv/karatsuba.test.cpp @@ -5,14 +5,11 @@ #include "../../../code/math/mint_d31.hpp" #include "../../../code/math/mint_d63.hpp" -#include "../../../code/math/mint_ds.hpp" #include "../../../code/math/mint_s30.hpp" #include "../../../code/math/mint_s63.hpp" -#include "../../../code/math/mint_ss.hpp" #include "../../../code/math/nimber.hpp" #include "../base.hpp" - tifa_libs::rand::Gen> g; template @@ -30,21 +27,20 @@ int main() { auto tcase = tifa_libs::unittest::pre_test(); tifa_libs::math::mint_d31<-1>::set_mod(1000000000 + 7); tifa_libs::math::mint_d63<-1>::set_mod(1000000000 + 7); - tifa_libs::math::mint_ds<-1>::set_mod(1000000000 + 7); switch (tcase) { case tifa_libs::unittest::ts_example_00: test_karatsuba>(1000); break; case tifa_libs::unittest::ts_example_01: test_karatsuba>(1000); break; - case tifa_libs::unittest::ts_random_00: test_karatsuba>(1000); break; - case tifa_libs::unittest::ts_random_01: test_karatsuba>(1000); break; - case tifa_libs::unittest::ts_random_02: test_karatsuba>(1000); break; - case tifa_libs::unittest::ts_random_03: test_karatsuba>(1000); break; - case tifa_libs::unittest::ts_random_04: test_karatsuba(1000); break; - case tifa_libs::unittest::ts_random_05: test_karatsuba(1000); break; - case tifa_libs::unittest::ts_random_06: test_karatsuba(1000); break; - case tifa_libs::unittest::ts_random_07: test_karatsuba(1000); break; - case tifa_libs::unittest::ts_random_08: test_karatsuba(1000); break; - case tifa_libs::unittest::ts_random_09: test_karatsuba(1000); break; + case tifa_libs::unittest::ts_random_00: test_karatsuba>(1000); break; + case tifa_libs::unittest::ts_random_01: test_karatsuba>(1000); break; + case tifa_libs::unittest::ts_random_02: test_karatsuba(1000); break; + case tifa_libs::unittest::ts_random_03: test_karatsuba(1000); break; + case tifa_libs::unittest::ts_random_04: test_karatsuba(1000); break; + case tifa_libs::unittest::ts_random_05: test_karatsuba(1000); break; + case tifa_libs::unittest::ts_random_06: test_karatsuba(1000); break; + case tifa_libs::unittest::ts_random_07: test_karatsuba(1000); break; + case tifa_libs::unittest::ts_random_08: break; + case tifa_libs::unittest::ts_random_09: break; default: break; } diff --git a/src/test_cpverifier/unit-test/edh/gray_code.csp2019s.test.cpp b/src/test_cpverifier/unit-test/edh/gray_code.csp2019s.test.cpp new file mode 100644 index 000000000..a83e4d561 --- /dev/null +++ b/src/test_cpverifier/unit-test/edh/gray_code.csp2019s.test.cpp @@ -0,0 +1,52 @@ +#define UNITTEST +#define PROBLEM "https://judge.yosupo.jp/problem/aplusb" + +#include "../../../code/edh/gray_code.hpp" + +#include "../base.hpp" + +strn single_proceed(std::istream& fin) { + std::stringstream ss; + + u32 n; + u64 k; + fin >> n >> k; + auto x = tifa_libs::gray_code(n, k).to_string().substr(64 - n); + ss << x; + + return ss.str(); +} + +void test(strn CR data) { + strn path = "src/data/csp/2019s/code" + data; + std::ifstream fin(path + ".in"), fans(path + ".ans"); + + strn got = single_proceed(fin); + strn want; + std::getline(fans, want); + while (isspace(got.back())) got.pop_back(); + while (isspace(want.back())) want.pop_back(); + check(got, want); +} + +int main() { + auto tcase = tifa_libs::unittest::pre_test(); + + switch (tcase) { + case tifa_libs::unittest::ts_example_00: test("1"), test("2"); break; + case tifa_libs::unittest::ts_example_01: test("3"), test("4"); break; + case tifa_libs::unittest::ts_random_00: test("5"), test("6"); break; + case tifa_libs::unittest::ts_random_01: test("7"), test("8"); break; + case tifa_libs::unittest::ts_random_02: test("9"), test("10"); break; + case tifa_libs::unittest::ts_random_03: test("11"), test("12"); break; + case tifa_libs::unittest::ts_random_04: test("13"), test("14"); break; + case tifa_libs::unittest::ts_random_05: test("15"), test("16"); break; + case tifa_libs::unittest::ts_random_06: test("17"); break; + case tifa_libs::unittest::ts_random_07: test("18"); break; + case tifa_libs::unittest::ts_random_08: test("19"); break; + case tifa_libs::unittest::ts_random_09: test("20"); break; + default: break; + } + + tifa_libs::unittest::post_test(); +} \ No newline at end of file diff --git a/src/test_cpverifier/unit-test/geo2d/coverage_rect_with_min_area.uva10173.test.cpp b/src/test_cpverifier/unit-test/geo2d/coverage_rect_min_area.uva10173.test.cpp similarity index 91% rename from src/test_cpverifier/unit-test/geo2d/coverage_rect_with_min_area.uva10173.test.cpp rename to src/test_cpverifier/unit-test/geo2d/coverage_rect_min_area.uva10173.test.cpp index 89ca94f6b..519d78cd4 100644 --- a/src/test_cpverifier/unit-test/geo2d/coverage_rect_with_min_area.uva10173.test.cpp +++ b/src/test_cpverifier/unit-test/geo2d/coverage_rect_min_area.uva10173.test.cpp @@ -1,7 +1,7 @@ #define UNITTEST #define PROBLEM "https://judge.yosupo.jp/problem/aplusb" -#include "../../../code/geo2d/coverage_rect_with_min_area.hpp" +#include "../../../code/geo2d/coverage_rect_min_area.hpp" #include "../base.hpp" @@ -14,7 +14,7 @@ strn single_proceed(u32 n, std::istream& fin) { ConvexHull2 cvh(n); fin >> cvh; - ss << tifa_libs::geo::coverage_rect_with_min_area(cvh.init()).area() << '\n'; + ss << tifa_libs::geo::coverage_rect_min_area(cvh.init()).area() << '\n'; return ss.str(); } diff --git a/src/test_cpverifier/unit-test/geo2d/cvh_area.uva10652.test.cpp b/src/test_cpverifier/unit-test/geo2d/cvh_area.uva10652.test.cpp index 2f9d96ca9..6f6b7ed99 100644 --- a/src/test_cpverifier/unit-test/geo2d/cvh_area.uva10652.test.cpp +++ b/src/test_cpverifier/unit-test/geo2d/cvh_area.uva10652.test.cpp @@ -8,7 +8,7 @@ using data_t = f64; using Point2 = tifa_libs::geo::point; using ConvexHull2 = tifa_libs::geo::cvh; -constexpr data_t PI = std::numbers::pi_v; +constexpr data_t PI = pi_v; strn single_proceed(std::istream& fin) { std::stringstream ss; diff --git a/src/test_cpverifier/unit-test/geo2d/cvh_circum.uva1303.test.cpp b/src/test_cpverifier/unit-test/geo2d/cvh_circum.uva1303.test.cpp index e8e0c7c5f..ae883f4f4 100644 --- a/src/test_cpverifier/unit-test/geo2d/cvh_circum.uva1303.test.cpp +++ b/src/test_cpverifier/unit-test/geo2d/cvh_circum.uva1303.test.cpp @@ -8,7 +8,7 @@ using data_t = f64; using Point2 = tifa_libs::geo::point; using ConvexHull2 = tifa_libs::geo::cvh; -constexpr data_t PI = std::numbers::pi_v; +constexpr data_t PI = pi_v; strn single_proceed(std::istream& fin) { std::stringstream ss; diff --git a/src/test_cpverifier/unit-test/geo2d/hahn_banach.uva10256.test.cpp b/src/test_cpverifier/unit-test/geo2d/hahn_banach.uva10256.test.cpp index 1b6d5034a..536f50642 100644 --- a/src/test_cpverifier/unit-test/geo2d/hahn_banach.uva10256.test.cpp +++ b/src/test_cpverifier/unit-test/geo2d/hahn_banach.uva10256.test.cpp @@ -19,7 +19,7 @@ strn single_proceed(u32 n, u32 m, std::istream& fin) { if (tifa_libs::geo::relation_CvhP(poly2, i) != tifa_libs::geo::outside_pop) return RES_Yn[0]; for (auto CR i : poly2.vs) if (tifa_libs::geo::relation_CvhP(poly1, i) != tifa_libs::geo::outside_pop) return RES_Yn[0]; - if (poly1.vs.size() > 1 && poly2.vs.size() > 1) { + if (poly1.size() > 1 && poly2.size() > 1) { for (auto it = poly1.vs.begin(), itn = it + 1; it != poly1.vs.end(); ++it, ++itn) { if (itn == poly1.vs.end()) itn = poly1.vs.begin(); for (auto it2 = poly2.vs.begin(), it2n = it2 + 1; it2 != poly2.vs.end(); ++it2, ++it2n) { @@ -28,10 +28,10 @@ strn single_proceed(u32 n, u32 m, std::istream& fin) { } } } else { - if (poly1.vs.size() == 1 && poly2.vs.size() == 1) return RES_Yn[!tifa_libs::is_eq(poly1[0].x, poly2[0].x) || !tifa_libs::is_eq(poly1[0].y, poly2[0].y)]; - if (poly1.vs.size() == 1 && poly2.vs.size() == 2) return RES_Yn[!tifa_libs::geo::is_on_S({poly2[0], poly2[1]}, poly1[0])]; - if (poly1.vs.size() == 2 && poly2.vs.size() == 1) return RES_Yn[!tifa_libs::geo::is_on_S({poly1[0], poly1[1]}, poly2[0])]; - if (poly1.vs.size() == 2 && poly2.vs.size() == 2) return RES_Yn[!tifa_libs::geo::is_ins_SS({poly1[0], poly1[1]}, {poly2[0], poly2[1]})]; + if (poly1.size() == 1 && poly2.size() == 1) return RES_Yn[!tifa_libs::is_eq(poly1[0].x, poly2[0].x) || !tifa_libs::is_eq(poly1[0].y, poly2[0].y)]; + if (poly1.size() == 1 && poly2.size() == 2) return RES_Yn[!tifa_libs::geo::is_on_S({poly2[0], poly2[1]}, poly1[0])]; + if (poly1.size() == 2 && poly2.size() == 1) return RES_Yn[!tifa_libs::geo::is_on_S({poly1[0], poly1[1]}, poly2[0])]; + if (poly1.size() == 2 && poly2.size() == 2) return RES_Yn[!tifa_libs::geo::is_ins_SS({poly1[0], poly1[1]}, {poly2[0], poly2[1]})]; } return RES_Yn[1]; } diff --git a/src/test_cpverifier/unit-test/geo2d/ins_hps.uva1571.test.cpp b/src/test_cpverifier/unit-test/geo2d/ins_hps.uva1571.test.cpp index 335b7b40a..d50155daf 100644 --- a/src/test_cpverifier/unit-test/geo2d/ins_hps.uva1571.test.cpp +++ b/src/test_cpverifier/unit-test/geo2d/ins_hps.uva1571.test.cpp @@ -19,7 +19,7 @@ strn single_proceed(u32 n, std::istream& fin) { vl.emplace_back(vp.back(), vp.front()); fle_ (u32, i, 0, n - 2) vl.emplace_back(vp[i], vp[i + 1]); ConvexHull2 cvh = tifa_libs::geo::ins_hPs(vl); - ss << (cvh.reunique().vs.size() > 1) << '\n'; + ss << (cvh.reunique().size() > 1) << '\n'; return ss.str(); } diff --git a/src/test_cpverifier/unit-test/geo2d/make_c.uva12304.test.cpp b/src/test_cpverifier/unit-test/geo2d/make_c.uva12304.test.cpp index 8b029fcfd..b5fa5d6c4 100644 --- a/src/test_cpverifier/unit-test/geo2d/make_c.uva12304.test.cpp +++ b/src/test_cpverifier/unit-test/geo2d/make_c.uva12304.test.cpp @@ -15,7 +15,7 @@ using Line2 = tifa_libs::geo::line; using Triangle = tifa_libs::geo::triangle; using Circle2 = tifa_libs::geo::circle; -constexpr data_t PI = std::numbers::pi_v; +constexpr data_t PI = pi_v; strn single_proceed(strnv s, std::istream& fin) { std::stringstream ss; diff --git a/src/test_cpverifier/unit-test/geo2d/triangle_centers.test.cpp b/src/test_cpverifier/unit-test/geo2d/triangle_centers.test.cpp index c40b923f0..e9600dac7 100644 --- a/src/test_cpverifier/unit-test/geo2d/triangle_centers.test.cpp +++ b/src/test_cpverifier/unit-test/geo2d/triangle_centers.test.cpp @@ -125,7 +125,7 @@ void test_x(triangle CR t) { point uva = (t.A - x).do_unit(), uvb = (t.B - x).do_unit(), uvc = (t.C - x).do_unit(); T ang_axb = std::abs(tifa_libs::geo::ang_PP(uva, uvb)), ang_bxc = std::abs(tifa_libs::geo::ang_PP(uvb, uvc)), ang_cxa = std::abs(tifa_libs::geo::ang_PP(uvc, uva)); - CEXP T _60 = std::numbers::pi_v / 3, _120 = std::numbers::pi_v / 1.5; + CEXP T _60 = pi_v / 3, _120 = pi_v / 1.5; check_bool((is_eq(ang_axb, _120) && is_eq(ang_bxc, _120) && is_eq(ang_cxa, _120)) || (is_eq(ang_axb, _60) && is_eq(ang_bxc, _60) && is_eq(ang_cxa, _120)) || diff --git a/src/test_cpverifier/unit-test/lalg/sherman_morrison.test.cpp b/src/test_cpverifier/unit-test/lalg/sherman_morrison.test.cpp index ff42b1e34..d8891eb00 100644 --- a/src/test_cpverifier/unit-test/lalg/sherman_morrison.test.cpp +++ b/src/test_cpverifier/unit-test/lalg/sherman_morrison.test.cpp @@ -9,10 +9,8 @@ #include "../../../code/math/mint_2e61n1.hpp" #include "../../../code/math/mint_d31.hpp" #include "../../../code/math/mint_d63.hpp" -#include "../../../code/math/mint_ds.hpp" #include "../../../code/math/mint_s30.hpp" #include "../../../code/math/mint_s63.hpp" -#include "../../../code/math/mint_ss.hpp" #include "../../../code/rand/gen.hpp" #include "../base.hpp" @@ -53,19 +51,15 @@ CEXP u64 MOD64 = 3'799'912'185'593'857; using mintd31 = tifa_libs::math::mint_d31<-1>; using mintd63 = tifa_libs::math::mint_d63<-1>; -using mintds = tifa_libs::math::mint_ds<-1>; using mints30 = tifa_libs::math::mint_s30; using mints63 = tifa_libs::math::mint_s63; -using mintss = tifa_libs::math::mint_ss; void test(u32 n) { single_test(n); single_test(n); single_test(n); - single_test(n); single_test(n); single_test(n); - single_test(n); } int main() { @@ -73,7 +67,6 @@ int main() { mintd31::set_mod(MOD); mintd63::set_mod(MOD64); - mintds::set_mod(MOD); switch (tcase) { case tifa_libs::unittest::ts_example_00: test(4); break; diff --git a/src/test_cpverifier/unit-test/nt/lsieve2.loj124.ss.test.cpp b/src/test_cpverifier/unit-test/nt/lsieve2.loj124.ss.test.cpp deleted file mode 100644 index 4eaf285cc..000000000 --- a/src/test_cpverifier/unit-test/nt/lsieve2.loj124.ss.test.cpp +++ /dev/null @@ -1,90 +0,0 @@ -#define UNITTEST -#define PROBLEM "https://judge.yosupo.jp/problem/aplusb" - -#include "../../../code/nt/lsieve2.hpp" - -#include "../../../code/math/mint_ss.hpp" -#include "../../../code/math/qpow.hpp" -#include "../base.hpp" - -using mint = tifa_libs::math::mint_ss<1'000'000'000 + 7>; - -void test(strn CR data) { - strn path = "src/data/loj/124/" + data; - std::ifstream fin(path + ".in"), fans(path + ".out"); - - u32 n, k; - fin >> n >> k; - tifa_libs::math::lsieve2 ls(n); - mint pk = 1, lst = 1; - vec dk = ls.template run([&](u32 p, u32 e) { - if (e == 1) pk = tifa_libs::math::qpow(p, k), lst = 1 + pk; - else lst = lst * pk + 1; - return lst; - }); - mint res = 0; - fle_(u32, i, 1, n) res += dk[i]; - - u64 got = res.val(), want; - fans >> want; - check(got, want, check_param(data)); -} - -int main() { - auto tcase = tifa_libs::unittest::pre_test(); - - switch (tcase) { - case tifa_libs::unittest::ts_example_00: - test("sieve0"); - test("sieve1"); - test("sieve2"); - break; - case tifa_libs::unittest::ts_example_01: - test("sieve3"); - test("sieve4"); - break; - case tifa_libs::unittest::ts_random_00: - test("sieve5"); - test("sieve6"); - break; - case tifa_libs::unittest::ts_random_01: - test("sieve7"); - test("sieve8"); - break; - case tifa_libs::unittest::ts_random_02: - test("sieve9"); - test("sieve10"); - break; - case tifa_libs::unittest::ts_random_03: - test("sieve11"); - test("sieve12"); - break; - case tifa_libs::unittest::ts_random_04: - test("sieve13"); - test("sieve14"); - break; - case tifa_libs::unittest::ts_random_05: - test("sieve15"); - test("sieve16"); - break; - case tifa_libs::unittest::ts_random_06: - test("sieve17"); - test("sieve18"); - break; - case tifa_libs::unittest::ts_random_07: - test("sieve19"); - test("sieve20"); - break; - case tifa_libs::unittest::ts_random_08: - test("sieve21"); - test("sieve22"); - break; - case tifa_libs::unittest::ts_random_09: - test("sieve23"); - test("sieve24"); - break; - default: break; - } - - tifa_libs::unittest::post_test(); -} \ No newline at end of file diff --git a/src/test_cpverifier/unit-test/nt/lsieve2.loj6680.ss.test.cpp b/src/test_cpverifier/unit-test/nt/lsieve2.loj6680.ss.test.cpp deleted file mode 100644 index 6d0b38ee7..000000000 --- a/src/test_cpverifier/unit-test/nt/lsieve2.loj6680.ss.test.cpp +++ /dev/null @@ -1,84 +0,0 @@ -#define UNITTEST -#define PROBLEM "https://judge.yosupo.jp/problem/aplusb" - -// clang-format off -#include "../../../code/util/pair_op.hpp" -// clang-format on - -#include "../../../code/nt/lsieve2.hpp" - -#include "../../../code/math/mint_ss.hpp" -#include "../base.hpp" - -using mint = tifa_libs::math::mint_ss<998244353>; - -void test(strn CR data) { - strn path = "src/data/loj/6680/" + data; - std::ifstream fin(path + ".in"), fans(path + ".out"); - - u32 n; - fin >> n; - tifa_libs::math::lsieve2 ls(n); - ptt lst; - vecpt g = ls.run([&](u32 p, u32 e) { - if (e == 1) return lst = ptt(p + (p ^ 1), 1 + (p ^ 1)); - else return lst = ptt((lst.first * p + (p ^ e)), (lst.second + (p ^ e))); - }, - ptt{1, 1}); - - vec f(n + 1); - f[1] = 1; - fle_(u32, i, 2, n) f[i] = f[i - 1] + g[i].first + g[i].first - g[i].second; - u64 got = f[1].val(); - fle_(u32, i, 2, n) got ^= f[i].val(); - - u64 want; - fans >> want; - check(got, want, check_param(data)); -} - -int main() { - auto tcase = tifa_libs::unittest::pre_test(); - - switch (tcase) { - case tifa_libs::unittest::ts_example_00: - test("1"); - test("2"); - break; - case tifa_libs::unittest::ts_example_01: - test("3"); - test("4"); - break; - case tifa_libs::unittest::ts_random_00: - test("5"); - test("6"); - break; - case tifa_libs::unittest::ts_random_01: - test("7"); - test("8"); - break; - case tifa_libs::unittest::ts_random_02: - test("9"); - test("10"); - break; - case tifa_libs::unittest::ts_random_03: - test("11"); - test("12"); - break; - case tifa_libs::unittest::ts_random_04: - test("13"); - test("14"); - break; - case tifa_libs::unittest::ts_random_05: - test("15"); - test("16"); - break; - case tifa_libs::unittest::ts_random_06: test("17"); break; - case tifa_libs::unittest::ts_random_07: test("18"); break; - case tifa_libs::unittest::ts_random_08: test("19"); break; - case tifa_libs::unittest::ts_random_09: test("20"); break; - default: break; - } - - tifa_libs::unittest::post_test(); -} \ No newline at end of file diff --git a/src/test_cpverifier/unit-test/nt/period_fib.test.cpp b/src/test_cpverifier/unit-test/nt/period_fib.test.cpp index f97c5010b..b7fdd7dce 100644 --- a/src/test_cpverifier/unit-test/nt/period_fib.test.cpp +++ b/src/test_cpverifier/unit-test/nt/period_fib.test.cpp @@ -5,7 +5,6 @@ #include "../../../code/lalg/mat.hpp" #include "../../../code/math/mint_d31.hpp" -#include "../../../code/math/mint_ds.hpp" #include "../../../code/math/qpow.hpp" #include "../base.hpp" @@ -21,23 +20,22 @@ void test(u32 n) { check(a * b, b, check_param(n), check_param(period), check_param(a)); } -using mint1 = tifa_libs::math::mint_d31<-1>; -using mint2 = tifa_libs::math::mint_ds<-1>; +using mint = tifa_libs::math::mint_d31<-1>; int main() { auto tcase = tifa_libs::unittest::pre_test(); switch (tcase) { - case tifa_libs::unittest::ts_example_00: test(2); break; - case tifa_libs::unittest::ts_random_00: test(2); break; - case tifa_libs::unittest::ts_random_01: test(10); break; - case tifa_libs::unittest::ts_random_02: test(10); break; - case tifa_libs::unittest::ts_random_03: test(5000); break; - case tifa_libs::unittest::ts_random_04: test(5000); break; - case tifa_libs::unittest::ts_random_05: test(1919810); break; - case tifa_libs::unittest::ts_random_06: test(1919810); break; - case tifa_libs::unittest::ts_random_07: test(1'000'000'000); break; - case tifa_libs::unittest::ts_random_08: test(1'000'000'000); break; + case tifa_libs::unittest::ts_example_00: test(2); break; + case tifa_libs::unittest::ts_random_00: test(10); break; + case tifa_libs::unittest::ts_random_01: test(5000); break; + case tifa_libs::unittest::ts_random_02: test(1919810); break; + case tifa_libs::unittest::ts_random_03: test(1'000'000'000); break; + case tifa_libs::unittest::ts_random_04: break; + case tifa_libs::unittest::ts_random_05: break; + case tifa_libs::unittest::ts_random_06: break; + case tifa_libs::unittest::ts_random_07: break; + case tifa_libs::unittest::ts_random_08: break; case tifa_libs::unittest::ts_random_09: break; default: break; } diff --git a/src/test_cpverifier/unit-test/nt/proot_gint.test.cpp b/src/test_cpverifier/unit-test/nt/proot_gint.test.cpp index c82d0b5e5..f1bcd7aa7 100644 --- a/src/test_cpverifier/unit-test/nt/proot_gint.test.cpp +++ b/src/test_cpverifier/unit-test/nt/proot_gint.test.cpp @@ -3,14 +3,14 @@ #include "../../../code/nt/proot_gint.hpp" +#include "../../../code/math/mint_s30.hpp" #include "../../../code/math/mint_s63.hpp" -#include "../../../code/math/mint_ss.hpp" #include "../../../code/math/qpow.hpp" #include "../../../code/nt/jacobi_sym.hpp" #include "../base.hpp" template -using mint = tifa_libs::math::mint_ss; +using mint = tifa_libs::math::mint_s30; template using mint64 = tifa_libs::math::mint_s63; @@ -41,17 +41,17 @@ void test_proot_gint() { for (auto k : pf) pf_v.push_back((decltype(mod))k); __single_test(mod, pf_v); - __single_test(mod, pf_v); - __single_test(mod, pf_v); - __single_test(mod, pf_v); - __single_test(mod, pf_v); + if CEXP (mint::mod() > 3) __single_test(mod, pf_v); + if CEXP (mint::mod() > 5) __single_test(mod, pf_v); + if CEXP (mint::mod() > 7) __single_test(mod, pf_v); + if CEXP (mint::mod() > 11) __single_test(mod, pf_v); __single_test(mod, pf_v); __single_test(mod, pf_v); - __single_test(mod, pf_v); - __single_test(mod, pf_v); - __single_test(mod, pf_v); - __single_test(mod, pf_v); + if CEXP (mint::mod() > 3) __single_test(mod, pf_v); + if CEXP (mint::mod() > 5) __single_test(mod, pf_v); + if CEXP (mint::mod() > 7) __single_test(mod, pf_v); + if CEXP (mint::mod() > 11) __single_test(mod, pf_v); } int main() { @@ -60,7 +60,6 @@ int main() { switch (tcase) { // small prime case tifa_libs::unittest::ts_example_00: - test_proot_gint>(); test_proot_gint>(); test_proot_gint>(); test_proot_gint>(); @@ -94,7 +93,7 @@ int main() { break; case tifa_libs::unittest::ts_random_05: test_proot_gint>(); - test_proot_gint>(); + test_proot_gint>(); break; // larger prime in u64 case tifa_libs::unittest::ts_random_06: diff --git a/src/test_cpverifier/unit-test/poly/trifunc.test.cpp b/src/test_cpverifier/unit-test/poly/trifunc.test.cpp index 724a5ac03..4567ac792 100644 --- a/src/test_cpverifier/unit-test/poly/trifunc.test.cpp +++ b/src/test_cpverifier/unit-test/poly/trifunc.test.cpp @@ -3,7 +3,6 @@ #include "../../../code/math/mint_s30.hpp" #include "../../../code/math/mint_s63.hpp" -#include "../../../code/math/mint_ss.hpp" #include "../../../code/poly/asin_fps.hpp" #include "../../../code/poly/atan_fps.hpp" #include "../../../code/poly/cossin_fps.hpp" @@ -13,11 +12,9 @@ CEXP u32 MOD = 998244353; using mints30 = tifa_libs::math::mint_s30; using mints63 = tifa_libs::math::mint_s63; -using mintss = tifa_libs::math::mint_ss; using pnm30 = tifa_libs::math::polyntt; using pnm63 = tifa_libs::math::polyntt; -using pnms = tifa_libs::math::polyntt; tifa_libs::rand::Gen> gen; @@ -26,7 +23,7 @@ void test(u32 n) { using mint = TPN poly::value_type; poly p(n + 1); p[0] = 0; - fle_(u32, i, 1, n) p[i] = mint(gen()); + fle_ (u32, i, 1, n) p[i] = mint(gen()); const u32 sz = n + 1; auto sqrt_1mpp = tifa_libs::math::sqrt_fps(-p * p + 1, sz).value(); @@ -56,13 +53,13 @@ int main() { switch (tcase) { case tifa_libs::unittest::ts_example_00: test(100); break; case tifa_libs::unittest::ts_random_00: test(100); break; - case tifa_libs::unittest::ts_random_01: test(100); break; - case tifa_libs::unittest::ts_random_02: test(1000); break; - case tifa_libs::unittest::ts_random_03: test(1000); break; - case tifa_libs::unittest::ts_random_04: test(1000); break; - case tifa_libs::unittest::ts_random_05: test(100000); break; - case tifa_libs::unittest::ts_random_06: test(100000); break; - case tifa_libs::unittest::ts_random_07: test(100000); break; + case tifa_libs::unittest::ts_random_01: test(1000); break; + case tifa_libs::unittest::ts_random_02: test(1000); break; + case tifa_libs::unittest::ts_random_03: test(100000); break; + case tifa_libs::unittest::ts_random_04: test(100000); break; + case tifa_libs::unittest::ts_random_05: break; + case tifa_libs::unittest::ts_random_06: break; + case tifa_libs::unittest::ts_random_07: break; case tifa_libs::unittest::ts_random_08: break; case tifa_libs::unittest::ts_random_09: break; default: break; diff --git a/src/test_cpverifier/yukicoder/0502.p3ntt-s30-ds.test.cpp b/src/test_cpverifier/yukicoder/0502.p3ntt-s30-ds.test.cpp deleted file mode 100644 index f7423e8ca..000000000 --- a/src/test_cpverifier/yukicoder/0502.p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://yukicoder.me/problems/no/502" - -#include "../../code/math/fact_mint.hpp" - -CEXP u64 MOD = 1000000007; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u64 n; - std::cin >> n; - std::cout << tifa_libs::math::fact_mint(n) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/yukicoder/0502.p3ntt-ss-d31.test.cpp b/src/test_cpverifier/yukicoder/0502.p3ntt-s63-d31.test.cpp similarity index 73% rename from src/test_cpverifier/yukicoder/0502.p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/yukicoder/0502.p3ntt-s63-d31.test.cpp index f019d9ea7..3fc78f056 100644 --- a/src/test_cpverifier/yukicoder/0502.p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/yukicoder/0502.p3ntt-s63-d31.test.cpp @@ -6,13 +6,13 @@ CEXP u64 MOD = 1000000007; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/yukicoder/0502.p3ntt-ss-d63.test.cpp b/src/test_cpverifier/yukicoder/0502.p3ntt-s63-d63.test.cpp similarity index 73% rename from src/test_cpverifier/yukicoder/0502.p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/yukicoder/0502.p3ntt-s63-d63.test.cpp index d72e00be5..7c1f424e1 100644 --- a/src/test_cpverifier/yukicoder/0502.p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/yukicoder/0502.p3ntt-s63-d63.test.cpp @@ -6,13 +6,13 @@ CEXP u64 MOD = 1000000007; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/yukicoder/0502.p3ntt-ss-ds.test.cpp b/src/test_cpverifier/yukicoder/0502.p3ntt-ss-ds.test.cpp deleted file mode 100644 index 4fecc8e7e..000000000 --- a/src/test_cpverifier/yukicoder/0502.p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://yukicoder.me/problems/no/502" - -#include "../../code/math/fact_mint.hpp" - -CEXP u64 MOD = 1000000007; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u64 n; - std::cin >> n; - std::cout << tifa_libs::math::fact_mint(n) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/yukicoder/0502.pmtt-ds.test.cpp b/src/test_cpverifier/yukicoder/0502.pmtt-ds.test.cpp deleted file mode 100644 index 1eea44261..000000000 --- a/src/test_cpverifier/yukicoder/0502.pmtt-ds.test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://yukicoder.me/problems/no/502" - -#include "../../code/math/fact_mint.hpp" - -CEXP u64 MOD = 1000000007; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u64 n; - std::cin >> n; - std::cout << tifa_libs::math::fact_mint(n) << '\n'; - return 0; -} diff --git a/src/test_cpverifier/yukicoder/0963.cossin-pntt-ss.test.cpp b/src/test_cpverifier/yukicoder/0963.cossin-pntt-ss.test.cpp deleted file mode 100644 index 6e0016f85..000000000 --- a/src/test_cpverifier/yukicoder/0963.cossin-pntt-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define AUTO_GENERATED -#define PROBLEM "https://yukicoder.me/problems/no/963" - -#include "../../code/poly/cossin_fps.hpp" - -CEXP u32 MOD = 1012924417; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - mint fact_n = 1; - fle_(u32, i, 1, n) fact_n *= i; - auto [fc, fs] = tifa_libs::math::cossin_fps(poly{0, 1}, n + 1); - std::cout << ((fs + 1) * inv_fps(fc, n + 1))[n] * 2 * fact_n << '\n'; - return 0; -} diff --git a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-s30-ds.test.cpp b/src/test_cpverifier/yukicoder/0963.ode-p3ntt-s30-ds.test.cpp deleted file mode 100644 index 31d4daff5..000000000 --- a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-s30-ds.test.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://yukicoder.me/problems/no/963" - -#include "../../code/poly/ode_fps.hpp" - -CEXP u32 MOD = 1012924417; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_s30.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - auto g = [](cT_(poly) f, u32 n) { return ((f * f + 1) * mint(2).inv()).pre(n); }; - auto dg = [](cT_(poly) f, u32 n) { return f.pre(n); }; - mint ans = tifa_libs::math::ode_fps(g, dg, 1, n + 1)[n] * 2; - fle_(u32, i, 2, n) ans *= i; - std::cout << ans << '\n'; - return 0; -} diff --git a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-s30-ss.test.cpp b/src/test_cpverifier/yukicoder/0963.ode-p3ntt-s30-ss.test.cpp deleted file mode 100644 index 29758e436..000000000 --- a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-s30-ss.test.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://yukicoder.me/problems/no/963" - -#include "../../code/poly/ode_fps.hpp" - -CEXP u32 MOD = 1012924417; - -#include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_s30<167772161>; -using mint2 = tifa_libs::math::mint_s30<469762049>; -using mint3 = tifa_libs::math::mint_s30<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - auto g = [](cT_(poly) f, u32 n) { return ((f * f + 1) * mint(2).inv()).pre(n); }; - auto dg = [](cT_(poly) f, u32 n) { return f.pre(n); }; - mint ans = tifa_libs::math::ode_fps(g, dg, 1, n + 1)[n] * 2; - fle_(u32, i, 2, n) ans *= i; - std::cout << ans << '\n'; - return 0; -} diff --git a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-d31.test.cpp b/src/test_cpverifier/yukicoder/0963.ode-p3ntt-s63-d31.test.cpp similarity index 79% rename from src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-d31.test.cpp rename to src/test_cpverifier/yukicoder/0963.ode-p3ntt-s63-d31.test.cpp index 53046a0b7..ded0581d6 100644 --- a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-d31.test.cpp +++ b/src/test_cpverifier/yukicoder/0963.ode-p3ntt-s63-d31.test.cpp @@ -6,13 +6,13 @@ CEXP u32 MOD = 1012924417; #include "../../code/math/mint_d31.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-d63.test.cpp b/src/test_cpverifier/yukicoder/0963.ode-p3ntt-s63-d63.test.cpp similarity index 79% rename from src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-d63.test.cpp rename to src/test_cpverifier/yukicoder/0963.ode-p3ntt-s63-d63.test.cpp index ee561a0a9..ce7e153ee 100644 --- a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-d63.test.cpp +++ b/src/test_cpverifier/yukicoder/0963.ode-p3ntt-s63-d63.test.cpp @@ -6,13 +6,13 @@ CEXP u32 MOD = 1012924417; #include "../../code/math/mint_d63.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-s30.test.cpp b/src/test_cpverifier/yukicoder/0963.ode-p3ntt-s63-s30.test.cpp similarity index 79% rename from src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-s30.test.cpp rename to src/test_cpverifier/yukicoder/0963.ode-p3ntt-s63-s30.test.cpp index 41dbe3d3a..be3ddd3c5 100644 --- a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-s30.test.cpp +++ b/src/test_cpverifier/yukicoder/0963.ode-p3ntt-s63-s30.test.cpp @@ -6,13 +6,13 @@ CEXP u32 MOD = 1012924417; #include "../../code/math/mint_s30.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-s63.test.cpp b/src/test_cpverifier/yukicoder/0963.ode-p3ntt-s63-s63.test.cpp similarity index 79% rename from src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-s63.test.cpp rename to src/test_cpverifier/yukicoder/0963.ode-p3ntt-s63-s63.test.cpp index dd01e6715..7cb92b3a4 100644 --- a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-s63.test.cpp +++ b/src/test_cpverifier/yukicoder/0963.ode-p3ntt-s63-s63.test.cpp @@ -6,13 +6,12 @@ CEXP u32 MOD = 1012924417; #include "../../code/math/mint_s63.hpp" -#include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; +using mint1 = tifa_libs::math::mint_s63<167772161>; +using mint2 = tifa_libs::math::mint_s63<469762049>; +using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; int main() { diff --git a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-ds.test.cpp b/src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-ds.test.cpp deleted file mode 100644 index 06ee8950f..000000000 --- a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-ds.test.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://yukicoder.me/problems/no/963" - -#include "../../code/poly/ode_fps.hpp" - -CEXP u32 MOD = 1012924417; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - auto g = [](cT_(poly) f, u32 n) { return ((f * f + 1) * mint(2).inv()).pre(n); }; - auto dg = [](cT_(poly) f, u32 n) { return f.pre(n); }; - mint ans = tifa_libs::math::ode_fps(g, dg, 1, n + 1)[n] * 2; - fle_(u32, i, 2, n) ans *= i; - std::cout << ans << '\n'; - return 0; -} diff --git a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-ss.test.cpp b/src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-ss.test.cpp deleted file mode 100644 index 4afcd3ea0..000000000 --- a/src/test_cpverifier/yukicoder/0963.ode-p3ntt-ss-ss.test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://yukicoder.me/problems/no/963" - -#include "../../code/poly/ode_fps.hpp" - -CEXP u32 MOD = 1012924417; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/poly3ntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using mint1 = tifa_libs::math::mint_ss<167772161>; -using mint2 = tifa_libs::math::mint_ss<469762049>; -using mint3 = tifa_libs::math::mint_ss<754974721>; -using poly = tifa_libs::math::poly3ntt; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - auto g = [](cT_(poly) f, u32 n) { return ((f * f + 1) * mint(2).inv()).pre(n); }; - auto dg = [](cT_(poly) f, u32 n) { return f.pre(n); }; - mint ans = tifa_libs::math::ode_fps(g, dg, 1, n + 1)[n] * 2; - fle_(u32, i, 2, n) ans *= i; - std::cout << ans << '\n'; - return 0; -} diff --git a/src/test_cpverifier/yukicoder/0963.ode-pmtt-ds.test.cpp b/src/test_cpverifier/yukicoder/0963.ode-pmtt-ds.test.cpp deleted file mode 100644 index b6b393f8f..000000000 --- a/src/test_cpverifier/yukicoder/0963.ode-pmtt-ds.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://yukicoder.me/problems/no/963" - -#include "../../code/poly/ode_fps.hpp" - -CEXP u32 MOD = 1012924417; - -#include "../../code/math/mint_ds.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ds<-1>; -using poly = tifa_libs::math::polymtt; - -int main() { - mint::set_mod(MOD); - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - auto g = [](cT_(poly) f, u32 n) { return ((f * f + 1) * mint(2).inv()).pre(n); }; - auto dg = [](cT_(poly) f, u32 n) { return f.pre(n); }; - mint ans = tifa_libs::math::ode_fps(g, dg, 1, n + 1)[n] * 2; - fle_(u32, i, 2, n) ans *= i; - std::cout << ans << '\n'; - return 0; -} diff --git a/src/test_cpverifier/yukicoder/0963.ode-pmtt-ss.test.cpp b/src/test_cpverifier/yukicoder/0963.ode-pmtt-ss.test.cpp deleted file mode 100644 index 4f2a1daa1..000000000 --- a/src/test_cpverifier/yukicoder/0963.ode-pmtt-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://yukicoder.me/problems/no/963" - -#include "../../code/poly/ode_fps.hpp" - -CEXP u32 MOD = 1012924417; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polymtt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polymtt; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - auto g = [](cT_(poly) f, u32 n) { return ((f * f + 1) * mint(2).inv()).pre(n); }; - auto dg = [](cT_(poly) f, u32 n) { return f.pre(n); }; - mint ans = tifa_libs::math::ode_fps(g, dg, 1, n + 1)[n] * 2; - fle_(u32, i, 2, n) ans *= i; - std::cout << ans << '\n'; - return 0; -} diff --git a/src/test_cpverifier/yukicoder/0963.ode-pntt-ss.test.cpp b/src/test_cpverifier/yukicoder/0963.ode-pntt-ss.test.cpp deleted file mode 100644 index d67880326..000000000 --- a/src/test_cpverifier/yukicoder/0963.ode-pntt-ss.test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#define AUTO_GENERATED -#define PROBLEM "https://yukicoder.me/problems/no/963" - -#include "../../code/poly/ode_fps.hpp" - -CEXP u32 MOD = 1012924417; - -#include "../../code/math/mint_ss.hpp" -#include "../../code/poly/polyntt.hpp" - -using mint = tifa_libs::math::mint_ss; -using poly = tifa_libs::math::polyntt; - -int main() { - std::ios::sync_with_stdio(false); - std::cin.tie(nullptr); - u32 n; - std::cin >> n; - auto g = [](cT_(poly) f, u32 n) { return ((f * f + 1) * mint(2).inv()).pre(n); }; - auto dg = [](cT_(poly) f, u32 n) { return f.pre(n); }; - mint ans = tifa_libs::math::ode_fps(g, dg, 1, n + 1)[n] * 2; - fle_(u32, i, 2, n) ans *= i; - std::cout << ans << '\n'; - return 0; -} diff --git a/src/test_tinplate/ds/cartesian_tree.cpp b/src/test_tinplate/ds/cartesian_tree.cpp index 89888ff5a..278cf73fe 100644 --- a/src/test_tinplate/ds/cartesian_tree.cpp +++ b/src/test_tinplate/ds/cartesian_tree.cpp @@ -25,13 +25,11 @@ int main() { 2. 节点 $i$ 的权值为 $p_i$, 每个节点的权值满足小根堆的性质 ## 输入 - 第一行一个整数 $n$ 第二行一个排列 $p_{1 \dots n}$ $1 \le n \le 10^7$ ## 输出 - 设 $l_i,r_i$ 分别表示节点 $i$ 的左右儿子的编号 (若不存在则为 $0$) 一行两个整数, 分别表示 $\operatorname{xor}_{i = 1}^n i \times (l_i + 1)$ 和 $\operatorname{xor}_{i = 1}^n i \times (r_i + 1)$ diff --git a/src/test_tinplate/ds/fenwick_2d_rr.cpp b/src/test_tinplate/ds/fenwick_2d_rr.cpp index 2bf5f07dd..e2684aa95 100644 --- a/src/test_tinplate/ds/fenwick_2d_rr.cpp +++ b/src/test_tinplate/ds/fenwick_2d_rr.cpp @@ -21,14 +21,12 @@ int main() { /* ## 输入 - 第一行为 `X n m`, 代表矩阵大小为 $n\times m$. 从第二行开始到文件尾的每一行会出现以下两种操作: - `L a b c d delta` 代表将 $(a,b),(c,d)$ 为顶点的矩形区域内的所有数字加上 $delta$ - `k a b c d` 代表求 $(a,b),(c,d)$ 为顶点的矩形区域内所有数字的和 $1 \le n \le 2048$, $1 \le m \le 2048$, $-500 \le delta \le 500$, 操作不超过 $2\times 10^5$ 个, 保证运算过程中及最终结果均不超过 $32$ 位带符号整数类型的表示范围 ## 输出 - 针对每个 `k` 操作, 在单独的一行输出答案 */ diff --git a/src/test_tinplate/ds/fenwick_rr.cpp b/src/test_tinplate/ds/fenwick_rr.cpp index ddeacf3f4..c78f220a4 100644 --- a/src/test_tinplate/ds/fenwick_rr.cpp +++ b/src/test_tinplate/ds/fenwick_rr.cpp @@ -30,7 +30,6 @@ int main() { 2. 求出某区间每一个数的和 ## 输入 - 第一行包含两个整数 $n, m$, 分别表示该数列数字的个数和操作的总个数 第二行包含 $n$ 个用空格分隔的整数, 其中第 $i$ 个数字表示数列第 $i$ 项的初始值 接下来 $m$ 行每行包含 $3$ 或 $4$ 个整数, 表示一个操作, 具体如下: diff --git a/src/test_tinplate/ds/fhq_treap.cpp b/src/test_tinplate/ds/fhq_treap.cpp index 60266e596..443d111da 100644 --- a/src/test_tinplate/ds/fhq_treap.cpp +++ b/src/test_tinplate/ds/fhq_treap.cpp @@ -31,11 +31,9 @@ int main() { 6. 求 $x$ 的后继(后继定义为大于 $x$, 且最小的数) ## 输入 - 第一行为 $n$, 表示操作的个数,下面 $n$ 行每行有两个数 $\text{opt}$ 和 $x$, $\text{opt}$ 表示操作的序号( $ 1 \leq \text{opt} \leq 6 $ ) ## 输出 - 对于操作 $3,4,5,6$ 每行输出一个数, 表示对应答案 */ diff --git a/src/test_tinplate/ds/leftist_tree.cpp b/src/test_tinplate/ds/leftist_tree.cpp index fe8812b4c..591aae729 100644 --- a/src/test_tinplate/ds/leftist_tree.cpp +++ b/src/test_tinplate/ds/leftist_tree.cpp @@ -31,7 +31,6 @@ int main() { 2. `2 x`: 输出第 $x$ 个数所在的堆最小数, 并将这个最小数删除 (若有多个最小数, 优先删除先输入的; 若第 $x$ 个数已经被删除, 则输出 $-1$ 并无视删除操作) ## 输入 - 第一行包含两个正整数 $n, m$, 分别表示一开始小根堆的个数和接下来操作的个数 第二行包含 $n$ 个正整数, 其中第 $i$ 个正整数表示第 $i$ 个小根堆初始时包含且仅包含的数 接下来 $m$ 行每行 $2$ 个或 $3$ 个正整数, 表示一条操作, 格式如下: @@ -40,11 +39,9 @@ int main() { $n\le 10^5$, $m\le 10^5$, 初始时小根堆中的所有数都在 `int` 范围内 ## 输出 - 输出包含若干行整数, 分别依次对应每一个操作 $2$ 所得的结果 样例解释 - 初始状态下, 五个小根堆分别为: $\{1\}$, $\{5\}$, $\{4\}$, $\{2\}$, $\{3\}$ 第一次操作, 将第 $1$ 个数所在的小根堆与第 $5$ 个数所在的小根堆合并, 故变为四个小根堆: $\{1,3\}$, $\{5\}$, $\{4\}$, $\{2\}$ 第二次操作, 将第 $2$ 个数所在的小根堆与第 $5$ 个数所在的小根堆合并, 故变为三个小根堆: $\{1,3,5\}$, $\{4\}$, $\{2\}$ diff --git a/src/test_tinplate/ds/link_cut_tree.cpp b/src/test_tinplate/ds/link_cut_tree.cpp index 50db88a97..4974e1c82 100644 --- a/src/test_tinplate/ds/link_cut_tree.cpp +++ b/src/test_tinplate/ds/link_cut_tree.cpp @@ -35,7 +35,6 @@ int main() { - 2 $v$ $p$: 对于边 $(v, p)$, 其中 $p$ 被认为是父节点, 输出 $v$ 子树中所有顶点权重的总和 ## 输入 - $N$ $Q$ $a_0$ $a_1$ ... $a_{N - 1}$ $u_0$ $v_0$ diff --git a/src/test_tinplate/ds/segbeats_cmmashm.cpp b/src/test_tinplate/ds/segbeats_cmmashm.cpp index 1e2aaa16c..8e67c2a97 100644 --- a/src/test_tinplate/ds/segbeats_cmmashm.cpp +++ b/src/test_tinplate/ds/segbeats_cmmashm.cpp @@ -43,13 +43,11 @@ int main() { 在每一次操作后, 我们都进行一次更新, 让 $B_i\gets\max(B_i,A_i)$ ## 输入 - 第一行包含两个正整数 $n,m$, 分别表示数列 $A$ 的长度和操作次数 第二行包含 $n$ 个整数 $A_1,A_2,\cdots,A_n$, 表示数列 $A$ 接下来 $m$ 行, 每行行首有一个整数 $op$, 表示操作类型; 接下来两个或三个整数表示操作参数, 格式见题目描述 ## 输出 - 对于 $op\in\{3,4,5\}$ 的操作, 输出一行包含一个整数, 表示这个询问的答案 */ diff --git a/src/test_tinplate/edh/cantor.cpp b/src/test_tinplate/edh/cantor.cpp index d957c0bf8..eb3f5a1df 100644 --- a/src/test_tinplate/edh/cantor.cpp +++ b/src/test_tinplate/edh/cantor.cpp @@ -23,12 +23,10 @@ int main() { 求 $1\sim N$ 的一个给定全排列在所有 $1\sim N$ 全排列中的排名. 结果对 $998244353$ 取模 ## 输入 - 第一行一个正整数 $N$ 第二行 $N$ 个正整数, 表示 $1\sim N$ 的一种全排列 ## 输出 - 一行一个非负整数, 表示答案对 $998244353$ 取模的值 */ diff --git a/src/test_tinplate/edh/cantor_inv.cpp b/src/test_tinplate/edh/cantor_inv.cpp index c63f7f438..29ab57c79 100644 --- a/src/test_tinplate/edh/cantor_inv.cpp +++ b/src/test_tinplate/edh/cantor_inv.cpp @@ -25,12 +25,10 @@ int main() { $\sum_{i=1}^K S_i*(K-i)!$ ## 输入 - 第一行包含一个整数 $T~(\le 10)$, 表示测试用例的数量. 每个测试用例由 2 行组成. 第一行包含一个整数 $K~(1 \le K \le 50000)$. 接下来的一行包含 $K$ 个整数 $S_1,S_2,\dots,S_k.~(0 \le Si \le K - i)$ ## 输出 - -对于每个测试用例,输出包含整数 $1$ 到 $K$ 的第 $N$ 个排列. 用单个空格分隔 +对于每个测试用例, 输出包含整数 $1$ 到 $K$ 的第 $N$ 个排列. 用单个空格分隔 */ /* diff --git a/src/test_tinplate/edh/gray_code.cpp b/src/test_tinplate/edh/gray_code.cpp index 718ad9594..fafdac0e0 100644 --- a/src/test_tinplate/edh/gray_code.cpp +++ b/src/test_tinplate/edh/gray_code.cpp @@ -19,12 +19,12 @@ int main() { /* 人们习惯将所有 $n$ 位二进制串按照字典序排列, 例如所有 2 位二进制串按字典序从小到大排列为: 00, 01, 10, 11 -格雷码 (Gray Code) 是一种特殊的 $n$ 位二进制串排列法, 它要求相邻的两个二进制串间**恰好**有一位**不同**, 特别地, 第一个串与最后一个串也算作相邻 +格雷码 (Gray Code) 是一种特殊的 $n$ 位二进制串排列法, 它要求相邻的两个二进制串间恰好有一位不同, 特别地, 第一个串与最后一个串也算作相邻 所有 2 位二进制串按格雷码排列的一个例子为: 00, 01, 11, 10 $n$ 位格雷码不止一种, 下面给出其中一种格雷码的生成算法: 1. 1 位格雷码由两个 1 位二进制串组成, 顺序为: 0, 1 -2. $n + 1$ 位格雷码的前 $2^n$ 个二进制串, 可以由依此算法生成的 $n$ 位格雷码 (总共 $2^n$ 个 $n$ 位二进制串) 按**顺序**排列, 再在每个串前加一个前缀 0 构成 -3. $n + 1$ 位格雷码的后 $2^n$ 个二进制串, 可以由依此算法生成的 $n$ 位格雷码 (总共 $2^n$ 个 $n$ 位二进制串) 按**逆序**排列, 再在每个串前加一个前缀 1 构成 +2. $n + 1$ 位格雷码的前 $2^n$ 个二进制串, 可以由依此算法生成的 $n$ 位格雷码 (总共 $2^n$ 个 $n$ 位二进制串) 按顺序排列, 再在每个串前加一个前缀 0 构成 +3. $n + 1$ 位格雷码的后 $2^n$ 个二进制串, 可以由依此算法生成的 $n$ 位格雷码 (总共 $2^n$ 个 $n$ 位二进制串) 按逆序排列, 再在每个串前加一个前缀 1 构成 综上, $n + 1$ 位格雷码, 由 $n$ 位格雷码的 $2^n$ 个二进制串按顺序排列再加前缀 0, 和按逆序排列再加前缀 1 构成, 共 $2^{n+1}$ 个二进制串. 另外, 对于 $n$ 位格雷码中的 $2^n$ 个 二进制串, 我们按上述算法得到的排列顺序将它们从 $0 \sim 2^n - 1$ 编号 按该算法, 2 位格雷码可以这样推出: 1. 已知 1 位格雷码为 0, 1 @@ -35,11 +35,9 @@ int main() { 现在给出 $n$, $k$, 请你求出按上述算法生成的 $n$ 位格雷码中的 $k$ 号二进制串 ## 输入 - 仅一行两个整数 $n$, $k$, 意义见题目描述 ## 输出 - 仅一行一个 $n$ 位二进制串表示答案 */ diff --git a/src/test_tinplate/edh/prufer.cpp b/src/test_tinplate/edh/prufer.cpp index 5ddbc6203..66792deff 100644 --- a/src/test_tinplate/edh/prufer.cpp +++ b/src/test_tinplate/edh/prufer.cpp @@ -28,17 +28,15 @@ int main() { /* 请实现 Prüfer 序列和无根树的相互转化 为方便你实现代码, 尽管是无根树, 我们在读入时仍将 $n$ 设为其根 -对于一棵无根树, 设 $f_{1\dots n-1}$ 为其**父亲序列** ($f_i$ 表示 $i$ 在 $n$ 为根时的父亲) , 设 $p_{1 \dots n-2}$ 为其 **Prüfer 序列** -另外, 对于一个长度为 $m$ 的序列 $a_{1 \dots m}$, 我们设其**权值**为 $\operatorname{xor}_{i = 1}^m i \times a_i$ +对于一棵无根树, 设 $f_{1\dots n-1}$ 为其父亲序列 ($f_i$ 表示 $i$ 在 $n$ 为根时的父亲) , 设 $p_{1 \dots n-2}$ 为其 Prüfer 序列 +另外, 对于一个长度为 $m$ 的序列 $a_{1 \dots m}$, 我们设其权值为 $\operatorname{xor}_{i = 1}^m i \times a_i$ ## 输入 - 第一行两个整数 $n,m$, 表示树的点数和转化类型 若 $m = 1$, 第二行一行 $n-1$ 个整数, 表示父亲序列 若 $m = 2$, 第二行一行 $n-2$ 个整数, 表示 Prufer 序列 ## 输出 - 若 $m = 1$, 一行一个整数, 表示给出的父亲序列对应的 Prüfer 序列的权值 若 $m = 2$, 一行一个整数, 表示给出的 Prüfer 序列对应的父亲序列的权值 */ diff --git a/src/test_tinplate/game/sudoku.cpp b/src/test_tinplate/game/sudoku.cpp index 3af84abc4..b6a8d4e18 100644 --- a/src/test_tinplate/game/sudoku.cpp +++ b/src/test_tinplate/game/sudoku.cpp @@ -20,11 +20,9 @@ int main() { /* ## 输入 - 一个未填的数独 ## 输出 - 填好的数独 */ diff --git a/src/doc_tex/math/mul_mod_u.tex b/src/test_tinplate/geo2d/any_ins_ss.cpp similarity index 100% rename from src/doc_tex/math/mul_mod_u.tex rename to src/test_tinplate/geo2d/any_ins_ss.cpp diff --git a/src/test_tinplate/geo2d/coverage_rect_with_min_area.cpp b/src/test_tinplate/geo2d/aunion_cs.cpp similarity index 100% rename from src/test_tinplate/geo2d/coverage_rect_with_min_area.cpp rename to src/test_tinplate/geo2d/aunion_cs.cpp diff --git a/src/test_tinplate/geo2d/coverage_rect_with_min_circum.cpp b/src/test_tinplate/geo2d/aunion_pos.cpp similarity index 100% rename from src/test_tinplate/geo2d/coverage_rect_with_min_circum.cpp rename to src/test_tinplate/geo2d/aunion_pos.cpp diff --git a/src/test_tinplate/math/mint_ds.cpp b/src/test_tinplate/geo2d/coverage_rect_min_area.cpp similarity index 100% rename from src/test_tinplate/math/mint_ds.cpp rename to src/test_tinplate/geo2d/coverage_rect_min_area.cpp diff --git a/src/test_tinplate/math/mint_ss.cpp b/src/test_tinplate/geo2d/coverage_rect_min_circum.cpp similarity index 100% rename from src/test_tinplate/math/mint_ss.cpp rename to src/test_tinplate/geo2d/coverage_rect_min_circum.cpp diff --git a/src/test_tinplate/math/mul_mod_s.cpp b/src/test_tinplate/geo2d/is_ins_sl.cpp similarity index 100% rename from src/test_tinplate/math/mul_mod_s.cpp rename to src/test_tinplate/geo2d/is_ins_sl.cpp diff --git a/src/test_tinplate/math/mul_mod_u.cpp b/src/test_tinplate/geo2d/make_c_pcc_ex.cpp similarity index 100% rename from src/test_tinplate/math/mul_mod_u.cpp rename to src/test_tinplate/geo2d/make_c_pcc_ex.cpp diff --git a/src/test_tinplate/graph/dinic.cpp b/src/test_tinplate/graph/dinic.cpp index 8e8e6fba3..46a94307b 100644 --- a/src/test_tinplate/graph/dinic.cpp +++ b/src/test_tinplate/graph/dinic.cpp @@ -18,17 +18,14 @@ int main() { 给出一个网络图, 以及其源点和汇点, 求出其网络最大流 ## 输入 - 第一行包含四个正整数 $n,m,s,t$, 分别表示点的个数, 有向边的个数, 源点序号, 汇点序号 接下来 $m$ 行每行包含三个正整数 $u_i,v_i,w_i$, 表示第 $i$ 条有向边从 $u_i$ 出发, 到达 $v_i$, 边权为 $w_i$ (即该边最大流量为 $w_i$) $1 \leq n\leq200$, $1 \leq m\leq 5000$, $0 \leq w< 2^{31}$ ## 输出 - 一行, 包含一个正整数, 即为该网络的最大流 ## 提示 - 样例图片参见 PDF 题目中存在 $3$ 条路径: - $4\to 2\to 3$, 该路线可通过 $20$ 的流量 diff --git a/src/test_tinplate/graph/domtree.cpp b/src/test_tinplate/graph/domtree.cpp index 842ac5d96..8d8bb60bb 100644 --- a/src/test_tinplate/graph/domtree.cpp +++ b/src/test_tinplate/graph/domtree.cpp @@ -30,13 +30,11 @@ int main() { 给定一张有向图, 求从 1 号点出发, 每个点能支配的点的个数 (包括自己) ## 输入 - 第一行两个正整数 $n,m$, 表示点数和边数 接下来 $m$ 行, 每行输入两个整数 $u,v$, 表示有一条 $u$ 到 $v$ 的有向边 $n\le2*10^5,m\le3*10^5$ ## 输出 - 一行输出 $n$ 个整数, 表示每个点能支配的点的个数 */ diff --git a/src/test_tinplate/graph/e_bcc.cpp b/src/test_tinplate/graph/e_bcc.cpp index ad23e9bb5..37b6576a3 100644 --- a/src/test_tinplate/graph/e_bcc.cpp +++ b/src/test_tinplate/graph/e_bcc.cpp @@ -34,19 +34,16 @@ int main() { 对于一个 $n$ 个节点 $m$ 条无向边的图, 请输出其边双连通分量的个数, 并且输出每个边双连通分量 ## 输入 - 第一行, 两个整数 $n$ 和 $m$ 接下来 $m$ 行, 每行两个整数 $u, v$, 表示一条无向边 $1 \le n \le 5 \times10 ^5$, $1 \le m \le 2 \times 10^6$ ## 输出 - 第一行一个整数 $x$ 表示边双连通分量的个数 接下来的 $x$ 行, 每行第一个数 $a$ 表示该分量结点个数, 然后 $a$ 个数, 描述一个边双连通分量 你可以以任意顺序输出边双连通分量与边双连通分量内的结点 ## 提示 - 样例四解释参见 PDF 相同颜色的点为同一个连通分量 */ diff --git a/src/test_tinplate/graph/gomory_hu.cpp b/src/test_tinplate/graph/gomory_hu.cpp index 5d3817caf..28d4b8b23 100644 --- a/src/test_tinplate/graph/gomory_hu.cpp +++ b/src/test_tinplate/graph/gomory_hu.cpp @@ -38,12 +38,11 @@ int main() { 给定一个 $n$ 个点 $m$ 条边的无向连通图, 多次询问两点之间的最小割. 两点间的最小割是这样定义的:原图的每条边有一个割断它的代价, 你需要用最小的代价使得这两个点不连通 ## 输入 - -第一行两个数 $n,m$. 接下来 $m$ 行, 每行 $3$ 个数 $u,v,w$, 表示有一条连接 $u$ 与 $v$ 的无向边, 割断它的代价为 $w$. 接下来这一行有一个整数$Q$, 表示询问次数 接下来 $Q$ 行, 每行两个数 $u,v$, 你需要求出 $u$ 与 $v$ 之间的最小割 **注意:因为数据有误, 给定图的真实点数应该是 $n+1$ 个, 编号为 $0$ 到 $n$** +第一行两个数 $n,m$. 接下来 $m$ 行, 每行 $3$ 个数 $u,v,w$, 表示有一条连接 $u$ 与 $v$ 的无向边, 割断它的代价为 $w$. 接下来这一行有一个整数$Q$, 表示询问次数 接下来 $Q$ 行, 每行两个数 $u,v$, 你需要求出 $u$ 与 $v$ 之间的最小割 +注意:因为数据有误, 给定图的真实点数应该是 $n+1$ 个, 编号为 $0$ 到 $n$ $1\le n\leq 500,\quad 0\le m\leq 1500,\quad 0\le Q\leq 10^5,\quad 0\leq w\leq 10^4,\quad u\neq v$ ## 输出 - 输出共 $Q$ 行, 每行一个整数对应询问的答案 */ diff --git a/src/test_tinplate/graph/kruskal_re_tree.cpp b/src/test_tinplate/graph/kruskal_re_tree.cpp index f27601003..d33baa4bf 100644 --- a/src/test_tinplate/graph/kruskal_re_tree.cpp +++ b/src/test_tinplate/graph/kruskal_re_tree.cpp @@ -44,14 +44,12 @@ int main() { 所以你可以看到, 生活游戏就是不断地生活、工作和旅行. 有 $q$ 个游戏存档. 对于每个游戏存档, 给定初始城市和社交能力点, 并且玩家还没有在任何城市生活或工作. 现在, 你, 真实的生活游戏玩家, 需要确定你在游戏结束时可能拥有的最大社交能力点数, 并输出给定游戏存档的结果 ## 输入 - 第一行包含三个整数 $n,m,q,(1\le n,m,q \le 10^5)$, 分别表示城市数量、道路数量和游戏存档数量 第二行包含 $n$ 个整数 $a_1, a_2, \cdots, a_n,(1\le a_i \le 10^4)$, 表示每个城市的社交能力点奖励 接下来的 $m$ 行, 每行包含三个整数 $u, v, w,(1\le u < v \le n, 1\le w \le 10^9)$, 表示城市 $u,v$ 之间由能力门槛为 $w$ 的道路双向连接 接下来的 $q$ 行, 每行包含两个整数 $x, k,(1\le x \le n, 1\le k \le 10^9)$, 表示游戏存档的初始城市和社交能力点 ## 输出 - 对于每个游戏存档, 输出一行, 包含一个整数, 表示你可能拥有的最大社交能力点数 */ diff --git a/src/test_tinplate/graph/ringcnt4.cpp b/src/test_tinplate/graph/ringcnt4.cpp index 26f09f034..1c8713b6a 100644 --- a/src/test_tinplate/graph/ringcnt4.cpp +++ b/src/test_tinplate/graph/ringcnt4.cpp @@ -3,13 +3,13 @@ #include "../../code/graph/ringcnt4.hpp" #include "../../code/graph/ringenum3.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s30.hpp" // clang-format off #include "../../code/io/ios_pair.hpp" #include "../../code/io/ios_container.hpp" // clang-format on -using mint = tifa_libs::math::mint_ss<1'000'000'000 + 7>; +using mint = tifa_libs::math::mint_s30<1'000'000'000 + 7>; int main() { std::ios::sync_with_stdio(false); @@ -72,14 +72,12 @@ int main() { 为了避免任何精度问题, 皮卡德将概率表示为 $p$, 边数表示为 $m$, 你应该报告值 $\left(p \cdot \binom{m}{4}\right) \bmod (10^9 + 7)$. 很容易证明 $p \cdot \binom{m}{4}$ 是一个整数 ## 输入 - 输入包含多个测试用例, 第一行包含一个正整数 $T$, 表示测试用例的数量, 最多为 $10$ 对于每个测试用例, 第一行包含两个整数 $n$ 和 $m$, 表示给定简单无向图中的顶点数和边数, 其中 $4 \leq n \leq 10^5$, $4 \leq m \leq 2 \times 10^5$ 接下来的 $m$ 行描述图的所有边, 其中第 $i$ 行包含两个整数 $u$ 和 $v$, 表示第 $u$ 个顶点和第 $v$ 个顶点之间的一条边, 其中 $1 \leq u, v \leq n$ 且 $u \neq v$ 保证给定的图中不包含环或多重边 ## 输出 - 对于每个测试用例, 输出一行, 包含一个整数, 对应于值 $\left(p \cdot \binom{m}{4}\right) \bmod (10^9 + 7)$, 其中 $p$ 表示你需要计算的概率 */ diff --git a/src/test_tinplate/graph/ssp.cpp b/src/test_tinplate/graph/ssp.cpp index b9af01c62..e95709232 100644 --- a/src/test_tinplate/graph/ssp.cpp +++ b/src/test_tinplate/graph/ssp.cpp @@ -26,14 +26,12 @@ int main() { 你需要求出该网络的最小费用最大流, 即在 $F(G)$ 最大的前提下, 使 $C(G)$ 最小 ## 输入 - 输入第一行包含四个整数 $n,m,s,t$, 分别代表该网络的点数 $n$, 网络的边数 $m$, 源点编号 $s$, 汇点编号 $t$ 接下来 $m$ 行, 每行四个整数 $u_i,v_i,w_i,c_i$, 分别代表第 $i$ 条边的起点, 终点, 流量限制, 单位流量费用 $1 \leq n \leq 5\times 10^3$, $1 \leq m \leq 5 \times 10^4$, $1 \leq s,t \leq n$, $u_i \neq v_i$, $0 \leq w_i,c_i \leq 10^3$, 且该网络的最大流和最小费用 $\leq 2^{31}-1$ 输入数据随机生成 ## 输出 - 输出两个整数, 分别为该网络的最大流 $F(G)$, 以及在 $F(G)$ 最大的前提下, 该网络的最小费用 $C(G)$ */ diff --git a/src/test_tinplate/graph/steiner_tree.cpp b/src/test_tinplate/graph/steiner_tree.cpp index 039b097f8..50dc3217f 100644 --- a/src/test_tinplate/graph/steiner_tree.cpp +++ b/src/test_tinplate/graph/steiner_tree.cpp @@ -25,7 +25,6 @@ int main() { 你只需要求出 $E'$ 中所有边的权值和. ## 输入 - 第一行: 三个整数 $n,m,k$, 表示 $G$ 的结点数,边数和 $S$ 的大小. 接下来 $m$ 行: 每行三个整数 $u,v,w$, 表示编号为 $u,v$ 的点之间有一条权值为 $w$ 的无向边. 接下来一行: $k$ 个互不相同的正整数, 表示 $S$ 的元素. @@ -33,11 +32,9 @@ int main() { 保证给出的无向图连通, 但可能存在重边和自环. ## 输出 - 第一行: 一个整数, 表示 $E'$ 中边权和的最小值. ## 样例解释 - 样例中给出的图如下图所示, 红色点为 $S$ 中的元素, 红色边为 $E'$ 的元素, 此时 $E'$ 中所有边的权值和为 $2+2+3+4=11$, 达到最小值. 样例图片参见 PDF */ diff --git a/src/test_tinplate/graph/tarjan.cpp b/src/test_tinplate/graph/tarjan.cpp index b66cc8841..abe6d4d9d 100644 --- a/src/test_tinplate/graph/tarjan.cpp +++ b/src/test_tinplate/graph/tarjan.cpp @@ -44,14 +44,12 @@ int main() { 允许多次经过一条边或者一个点, 但是, 重复经过的点, 权值只计算一次 ## 输入 - 第一行两个正整数 $n,m$ 第二行 $n$ 个整数, 其中第 $i$ 个数 $a_i$ 表示点 $i$ 的点权 第三至 $m+2$ 行, 每行两个整数 $u,v$, 表示一条 $u\rightarrow v$ 的有向边 $1\le n \le 10^4$, $1\le m \le 10^5$, $0\le a_i\le 10^3$ ## 输出 - 共一行, 最大的点权之和 */ diff --git a/src/test_tinplate/graph/v_bcc.cpp b/src/test_tinplate/graph/v_bcc.cpp index 640818ae3..09925d49d 100644 --- a/src/test_tinplate/graph/v_bcc.cpp +++ b/src/test_tinplate/graph/v_bcc.cpp @@ -34,19 +34,16 @@ int main() { 对于一个 $n$ 个节点 $m$ 条无向边的图, 请输出其点双连通分量的个数, 并且输出每个点双连通分量 ## 输入 - 第一行, 两个整数 $n$ 和 $m$ 接下来 $m$ 行, 每行两个整数 $u, v$, 表示一条无向边 ## 输出 - 第一行一个整数 $x$ 表示点双连通分量的个数 接下来的 $x$ 行, 每行第一个数 $a$ 表示该分量结点个数, 然后 $a$ 个数, 描述一个点双连通分量 你可以以任意顺序输出点双连通分量与点双连通分量内的结点 $1 \le n \le 5 \times10 ^5$, $1 \le m \le 2 \times 10^6$ ## 提示 - 样例四解释见 PDF 相同颜色的点为同一个分量里的结点 温馨提示: 请认真考虑孤立点与自环 (样例五) 的情况. diff --git a/src/test_tinplate/math/exeuclid.cpp b/src/test_tinplate/math/exeuclid.cpp index 628549295..5aebaba40 100644 --- a/src/test_tinplate/math/exeuclid.cpp +++ b/src/test_tinplate/math/exeuclid.cpp @@ -2,7 +2,7 @@ #include "../../code/math/exeuclid.hpp" -#include "../../code/math/mint_ss.hpp" +#include "../../code/math/mint_s30.hpp" template struct exeuclid_node { @@ -19,7 +19,7 @@ struct exeuclid_node { } }; -using mint = tifa_libs::math::mint_ss<998244353>; +using mint = tifa_libs::math::mint_s30<998244353>; using node = exeuclid_node; int main() { @@ -41,12 +41,10 @@ int main() { 给定 $n,\,a,\,b,\,c$ , 分别求 $\sum\limits_{i=0}^{n}\lfloor \frac{ai+b}{c} \rfloor\,,\ \sum\limits_{i=0}^{n}{\lfloor \frac{ai+b}{c} \rfloor}^2\,,\ \sum\limits_{i=0}^{n}i\lfloor \frac{ai+b}{c} \rfloor$ , 答案对 $998244353$ 取模. 多组数据 ## 输入 - 第一行给出数据组数 $t$ 接下来 $t$ 行, 每行有四个整数, 分别为每组数据的 $n,\ a,\ b,\ c$ ## 输出 - 对于每组数据, 输出一行三个整数, 为三个答案对 $998244353$ 取模的结果 */ diff --git a/src/test_tinplate/math/fact_mint.cpp b/src/test_tinplate/math/fact_mint.cpp index a292a7fe3..b52e825a9 100644 --- a/src/test_tinplate/math/fact_mint.cpp +++ b/src/test_tinplate/math/fact_mint.cpp @@ -27,13 +27,11 @@ int main() { 有 $T$ 组数据 ## 输入 - 第一行一个正整数 $T$, 表示数据组数 接下来 $T$ 行, 每行两个正整数 $n,p$, 意义如题目描述 $1\le n < p \le 2^{31}-1$, $1 \le T \le 5$, 保证 $p$ 为质数 ## 输出 - 输出 $T$ 行, 表示每组数据的答案 */ diff --git a/src/test_tinplate/math/frac_itv.cpp b/src/test_tinplate/math/frac_itv.cpp index 014e89445..ef3599c89 100644 --- a/src/test_tinplate/math/frac_itv.cpp +++ b/src/test_tinplate/math/frac_itv.cpp @@ -21,12 +21,10 @@ int main() { 请找到最小的正整数 $b$, 使得存在一些正整数 $a$ 满足 $a; +using mint = tifa_libs::math::mint_s30<1'000'000'000 + 7>; mint f(u64 p, u64 c) { auto _ = tifa_libs::math::qpow(mint(p), c); @@ -29,11 +29,9 @@ int main() { 定义积性函数 $f(x)$, 且 $f(p^k)=p^k(p^k-1)$ ($p$ 是质数), 求 $\sum_{i=1}^n f(i)$ 对 $10^9+7$ 取模 ## 输入 - 一行一个整数 $n$ ## 输出 - 一个整数表示答案 */ diff --git a/src/test_tinplate/str/aho_corasick_automaton.cpp b/src/test_tinplate/str/aho_corasick_automaton.cpp index 3118cbd6d..f6fc74eee 100644 --- a/src/test_tinplate/str/aho_corasick_automaton.cpp +++ b/src/test_tinplate/str/aho_corasick_automaton.cpp @@ -36,14 +36,12 @@ int main() { 给你一个文本串 $S$ 和 $n$ 个模式串 $T_{1 \sim n}$, 请你分别求出每个模式串 $T_i$ 在 $S$ 中出现的次数 ## 输入 - 第一行包含一个正整数 $n$ 表示模式串的个数 接下来 $n$ 行, 第 $i$ 行包含一个由小写英文字母构成的非空字符串 $T_i$ 最后一行包含一个由小写英文字母构成的非空字符串 $S$ 数据不保证任意两个模式串不相同 ## 输出 - 输出包含 $n$ 行, 其中第 $i$ 行包含一个非负整数表示 $T_i$ 在 $S$ 中出现的次数 */ diff --git a/src/test_tinplate/str/ex_suffix_automaton.cpp b/src/test_tinplate/str/ex_suffix_automaton.cpp index 15086e717..c885cbdb2 100644 --- a/src/test_tinplate/str/ex_suffix_automaton.cpp +++ b/src/test_tinplate/str/ex_suffix_automaton.cpp @@ -27,12 +27,10 @@ int main() { 进一步, 设 $Q$ 为能接受 $s_1,s_2,\dots,s_n$ 的所有后缀的最小 DFA, 请你输出 $Q$ 的点数. (如果你无法理解这句话, 可以认为就是输出 $s_1,s_2,\dots,s_n$ 建成的 "广义后缀自动机" 的点数) ## 输入 - 第一行一个正整数 $n$ 以下 $n$ 行, 每行一个字符串, 第 $i$ 行表示字符串 $s_{i-1}$ ## 输出 - 第一行一个正整数, 为本质不同的子串个数 第二行一个正整数, 为 $Q$ 的点数 */ diff --git a/src/test_tinplate/str/orthodox_ex_suffix_automaton.cpp b/src/test_tinplate/str/orthodox_ex_suffix_automaton.cpp index f61a1e7a9..bd64213f5 100644 --- a/src/test_tinplate/str/orthodox_ex_suffix_automaton.cpp +++ b/src/test_tinplate/str/orthodox_ex_suffix_automaton.cpp @@ -23,12 +23,10 @@ int main() { 进一步, 设 $Q$ 为能接受 $s_1,s_2,\dots,s_n$ 的所有后缀的最小 DFA, 请你输出 $Q$ 的点数. (如果你无法理解这句话, 可以认为就是输出 $s_1,s_2,\dots,s_n$ 建成的 "广义后缀自动机" 的点数) ## 输入 - 第一行一个正整数 $n$ 以下 $n$ 行, 每行一个字符串, 第 $i$ 行表示字符串 $s_{i-1}$ ## 输出 - 第一行一个正整数, 为本质不同的子串个数 第二行一个正整数, 为 $Q$ 的点数 */ diff --git a/src/test_tinplate/str/suffix_array.cpp b/src/test_tinplate/str/suffix_array.cpp index 36398c0d6..045f44db6 100644 --- a/src/test_tinplate/str/suffix_array.cpp +++ b/src/test_tinplate/str/suffix_array.cpp @@ -17,11 +17,9 @@ int main() { 读入一个长度为 $n$ 的由大小写英文字母或数字组成的字符串, 请把这个字符串的所有非空后缀按字典序 (用 ASCII 数值比较) 从小到大排序, 然后按顺序输出后缀的第一个字符在原串中的位置. 位置编号为 $1$ 到 $n$ ## 输入 - 一行一个长度为 $n$ 的仅包含大小写英文字母或数字的字符串 ## 输出 - 一行, 共 $n$ 个整数, 表示答案 */ diff --git a/src/test_tinplate/str/suffix_automaton.cpp b/src/test_tinplate/str/suffix_automaton.cpp index 947556515..c02e726a2 100644 --- a/src/test_tinplate/str/suffix_automaton.cpp +++ b/src/test_tinplate/str/suffix_automaton.cpp @@ -35,11 +35,9 @@ int main() { 给定一个只包含小写字母的字符串 $S$, 请你求出 $S$ 的所有出现次数不为 $1$ 的子串的出现次数乘上该子串长度的最大值 ## 输入 - 一行一个仅包含小写字母的字符串 $S$ ## 输出 - 一个整数, 为所求答案 */ diff --git a/src/test_tinplate/tree/virtual_tree.cpp b/src/test_tinplate/tree/virtual_tree.cpp index f7980294a..49976115d 100644 --- a/src/test_tinplate/tree/virtual_tree.cpp +++ b/src/test_tinplate/tree/virtual_tree.cpp @@ -48,7 +48,6 @@ int main() { 侦查部门还发现, 敌军有一台神秘机器. 即使我军切断所有能源之后, 他们也可以用那台机器. 机器产生的效果不仅仅会修复所有我军炸毁的桥梁, 而且会重新随机资源分布 (但可以保证的是, 资源不会分布到 $1$ 号岛屿上) . 不过侦查部门还发现了这台机器只能够使用 $m$ 次, 所以我们只需要把每次任务完成即可 ## 输入 - 第一行一个整数 $n$, 表示岛屿数量 接下来 $n-1$ 行, 每行三个整数 $u,v,w$ , 表示 $u$ 号岛屿和 $v$ 号岛屿由一条代价为 $w$ 的桥梁直接相连 第 $n+1$ 行, 一个整数 $m$ , 代表敌方机器能使用的次数 @@ -56,7 +55,6 @@ int main() { $2\leq n \leq 2.5\times 10^5, 1\leq m\leq 5\times 10^5, \sum k_i \leq 5\times 10^5, 1\leq k_i< n, h_i\neq 1, 1\leq u,v\leq n, 1\leq w\leq 10^5$ ## 输出 - 输出共 $m$ 行, 表示每次任务的最小代价 */ diff --git a/src/test_tinplate/util/debruijn.cpp b/src/test_tinplate/util/debruijn.cpp index ea864a6c1..c64ba7240 100644 --- a/src/test_tinplate/util/debruijn.cpp +++ b/src/test_tinplate/util/debruijn.cpp @@ -39,15 +39,12 @@ int main() { 请注意, 由于这个系统相当老旧, 可用的数字仅为 $0$ 到 $9$ ## 输入 - 输入以一行包含三个整数开头: $N$ $M$ $K$ ($1 \le N \le 100000$, $1 \le M \le 10$, $1 \le K \le \min(M^N,100000)$), 分别表示 PIN 长度, 可用数字数量和要测试的 PIN 的最小数量. 接下来一行包含 $M$ 个整数: $A_i$ ($0 \le A_i \le 9$) , 表示可用数字. 您可以假设所有 $A_i$ 都是不同的. 您还可以假设所选择的 $N$, $M$ 和 $K$ 的值使得答案不超过 $100000$ 个数字 ## 输出 - 在一行中输出最短的字符串, 该字符串包含至少 $K$ 个不同的 PIN 作为其子串. 如果有多个这样的字符串, 则可以输出任何一个 ## 提示 - #1: 447, 477, 744, 747, 774 #2: 12, 21, 23, 32, 34, 43, 45, 54, 55 #3: 353593, 935359 diff --git a/src/test_tinplate/util/dll_loader.cpp b/src/test_tinplate/util/dll_loader.cpp index f51202e50..6d31a9d54 100644 --- a/src/test_tinplate/util/dll_loader.cpp +++ b/src/test_tinplate/util/dll_loader.cpp @@ -50,14 +50,14 @@ Given hexadecimal integers $A$ and $B$, print hexadecimal integer $AB$. $0 \leq |A|, |B| < 16^{16\times 10^5}$ The sum of (the number of characters in $A$) $+$ (the number of characters in $B$) over all test cases does not exceed $3200002$. -**input** +input $T$ $A$ $B$ $\vdots$ $A$ $B$ -**output** +output $AB$ $\vdots$ diff --git a/src/test_tinplate/util/dlx.cpp b/src/test_tinplate/util/dlx.cpp index aec5ddf54..bfb06f2fa 100644 --- a/src/test_tinplate/util/dlx.cpp +++ b/src/test_tinplate/util/dlx.cpp @@ -30,13 +30,11 @@ int main() { 你需要在矩阵中挑选出若干行, 使得对于矩阵的每一列 $j$, 在你挑选的这些行中, 有且仅有一行的第 $j$ 个元素为 $1$ ## 输入 - 第一行两个数 $N,M$ 接下来 $N$ 行, 每行 $M$ 个数字 $0$ 或 $1$, 表示这个矩阵 $N,M\leq 500$, 保证矩阵中 $1$ 的数量不超过 $5000$ 个 ## 输出 - 一行输出若干个数表示答案, 两个数之间用空格隔开, 输出任一可行方案均可, 顺序随意 若无解, 输出 `No Solution!` */ diff --git a/src/test_tinplate/util/josephus.cpp b/src/test_tinplate/util/josephus.cpp index feaba61b3..5b161432e 100644 --- a/src/test_tinplate/util/josephus.cpp +++ b/src/test_tinplate/util/josephus.cpp @@ -19,17 +19,14 @@ int main() { 为了清晰起见, 假设加入圆圈的第一个人的索引是 $1$, 在他逆时针方向上的下一个人的索引是 $2$, 依此类推. 根据定义, 该方向上的最后一个人的索引应该是 $n$, 你的任务是确定彼得想要站的位置的索引 ## 输入 - 输入包含多个测试用例, 第一行包含一个正整数$T$, 表示测试用例的数量, 最多为 $1000$ 对于每个测试用例, 只有一行包含三个整数 $n, m$ 和 $k$, 其中 $1 \le n, m, k \le 10^{18}$ 且 $n \ge m$ 保证所有测试用例中 $\min{m, k}$ (即$m$和$k$的最小值) 的总和不超过 $2 \times 10^6$ ## 输出 - 对于每个测试用例, 输出一行, 包含"Case #x: y" (不带引号), 其中$x$是从$1$开始的测试用例编号, $y$是正确位置的索引 ## 提示 - 样例展示了当 $(n, k)$ 分别为 $(10, 2)$ 和 $(10, 3)$ 时离开圆圈的顺序 */ diff --git a/src/test_tinplate/util/odt.cpp b/src/test_tinplate/util/odt.cpp index 32cba8db0..f4dea5a3e 100644 --- a/src/test_tinplate/util/odt.cpp +++ b/src/test_tinplate/util/odt.cpp @@ -49,14 +49,12 @@ CYJian 家对材料的要求非常严格, 他每次会选择一段连续区间 注意: 当 $x=1$ 或$y=N$ 时, 你的程序不需要判断前后的情况, 而只需要判断区间内的情况. ## 输入 - 第一行一个正整数 $N$ 接下来 $N$ 个字符, 表示材料 接下来 $K$ 个询问, 格式为上述的一种 $N\le500000,K\le500000,1; using hashstr = tifa_libs::str::hash_substr2; #endif - #ifdef GENTC_hashstr2_ss - CEXP u32 MOD0 = 998244353; - CEXP u32 MOD1 = 1000000007; - - #include "../../code/math/mint_ss.hpp" - #include "../../code/str/hash_substr2.hpp" - - using mint0 = tifa_libs::math::mint_ss; - using mint1 = tifa_libs::math::mint_ss; - using hashstr = tifa_libs::str::hash_substr2; - #endif hashstrd0: | #ifdef GENTC_hashstr2_d31 @@ -63,17 +52,6 @@ hashstrd0: | using mint1 = tifa_libs::math::mint_d63<-2>; using hashstr = tifa_libs::str::hash_substr2; #endif - #ifdef GENTC_hashstr2_ds - CEXP u32 MOD0 = 998244353; - CEXP u32 MOD1 = 1000000007; - - #include "../../code/math/mint_ds.hpp" - #include "../../code/str/hash_substr2.hpp" - - using mint0 = tifa_libs::math::mint_ds<-1>; - using mint1 = tifa_libs::math::mint_ds<-2>; - using hashstr = tifa_libs::str::hash_substr2; - #endif hashstrd1: | #ifdef GENTC_hashstr2_d31 @@ -84,10 +62,6 @@ hashstrd1: | mint0::set_mod(MOD0); mint1::set_mod(MOD1); #endif - #ifdef GENTC_hashstr2_ds - mint0::set_mod(MOD0); - mint1::set_mod(MOD1); - #endif mints: | #ifdef GENTC_s30 @@ -100,11 +74,6 @@ mints: | using mint = tifa_libs::math::mint_s63; #endif - #ifdef GENTC_ss - #include "../../code/math/mint_ss.hpp" - - using mint = tifa_libs::math::mint_ss; - #endif mintd0: | #ifdef GENTC_d31 @@ -117,11 +86,6 @@ mintd0: | using mint = tifa_libs::math::mint_d63<-1>; #endif - #ifdef GENTC_ds - #include "../../code/math/mint_ds.hpp" - - using mint = tifa_libs::math::mint_ds<-1>; - #endif mintd1: | #ifdef GENTC_d31 @@ -130,9 +94,6 @@ mintd1: | #ifdef GENTC_d63 mint::set_mod(MOD); #endif - #ifdef GENTC_ds - mint::set_mod(MOD); - #endif 3nttu64: | #ifdef GENTC_3nttu64_s30 @@ -144,13 +105,13 @@ mintd1: | using mint2 = tifa_libs::math::mint_s30<754974721>; using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; #endif - #ifdef GENTC_3nttu64_ss + #ifdef GENTC_3nttu64_s63 #include "../../code/conv/conv_3ntt.hpp" - #include "../../code/math/mint_ss.hpp" + #include "../../code/math/mint_s63.hpp" - using mint0 = tifa_libs::math::mint_ss<167772161>; - using mint1 = tifa_libs::math::mint_ss<469762049>; - using mint2 = tifa_libs::math::mint_ss<754974721>; + using mint0 = tifa_libs::math::mint_s63<167772161>; + using mint1 = tifa_libs::math::mint_s63<469762049>; + using mint2 = tifa_libs::math::mint_s63<754974721>; using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; #endif @@ -176,47 +137,25 @@ mintd1: | using mint2 = tifa_libs::math::mint_s30<754974721>; using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; #endif - #ifdef GENTC_3ntt_s30_ss - #include "../../code/conv/conv_3ntt.hpp" - #include "../../code/math/mint_s30.hpp" - #include "../../code/math/mint_ss.hpp" - - using mint = tifa_libs::math::mint_ss; - using mint0 = tifa_libs::math::mint_s30<167772161>; - using mint1 = tifa_libs::math::mint_s30<469762049>; - using mint2 = tifa_libs::math::mint_s30<754974721>; - using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; - #endif - #ifdef GENTC_3ntt_ss_s30 + #ifdef GENTC_3ntt_s63_s30 #include "../../code/conv/conv_3ntt.hpp" #include "../../code/math/mint_s30.hpp" - #include "../../code/math/mint_ss.hpp" + #include "../../code/math/mint_s63.hpp" using mint = tifa_libs::math::mint_s30; - using mint0 = tifa_libs::math::mint_ss<167772161>; - using mint1 = tifa_libs::math::mint_ss<469762049>; - using mint2 = tifa_libs::math::mint_ss<754974721>; + using mint0 = tifa_libs::math::mint_s63<167772161>; + using mint1 = tifa_libs::math::mint_s63<469762049>; + using mint2 = tifa_libs::math::mint_s63<754974721>; using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; #endif - #ifdef GENTC_3ntt_ss_s63 + #ifdef GENTC_3ntt_s63_s63 #include "../../code/conv/conv_3ntt.hpp" #include "../../code/math/mint_s63.hpp" - #include "../../code/math/mint_ss.hpp" using mint = tifa_libs::math::mint_s63; - using mint0 = tifa_libs::math::mint_ss<167772161>; - using mint1 = tifa_libs::math::mint_ss<469762049>; - using mint2 = tifa_libs::math::mint_ss<754974721>; - using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; - #endif - #ifdef GENTC_3ntt_ss_ss - #include "../../code/conv/conv_3ntt.hpp" - #include "../../code/math/mint_ss.hpp" - - using mint = tifa_libs::math::mint_ss; - using mint0 = tifa_libs::math::mint_ss<167772161>; - using mint1 = tifa_libs::math::mint_ss<469762049>; - using mint2 = tifa_libs::math::mint_ss<754974721>; + using mint0 = tifa_libs::math::mint_s63<167772161>; + using mint1 = tifa_libs::math::mint_s63<469762049>; + using mint2 = tifa_libs::math::mint_s63<754974721>; using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; #endif @@ -243,48 +182,26 @@ mintd1: | using mint2 = tifa_libs::math::mint_s30<754974721>; using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; #endif - #ifdef GENTC_3ntt_s30_ds - #include "../../code/conv/conv_3ntt.hpp" - #include "../../code/math/mint_ds.hpp" - #include "../../code/math/mint_s30.hpp" - - using mint = tifa_libs::math::mint_ds<-1>; - using mint0 = tifa_libs::math::mint_s30<167772161>; - using mint1 = tifa_libs::math::mint_s30<469762049>; - using mint2 = tifa_libs::math::mint_s30<754974721>; - using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; - #endif - #ifdef GENTC_3ntt_ss_d31 + #ifdef GENTC_3ntt_s63_d31 #include "../../code/conv/conv_3ntt.hpp" #include "../../code/math/mint_d31.hpp" - #include "../../code/math/mint_ss.hpp" + #include "../../code/math/mint_s63.hpp" using mint = tifa_libs::math::mint_d31<-1>; - using mint0 = tifa_libs::math::mint_ss<167772161>; - using mint1 = tifa_libs::math::mint_ss<469762049>; - using mint2 = tifa_libs::math::mint_ss<754974721>; + using mint0 = tifa_libs::math::mint_s63<167772161>; + using mint1 = tifa_libs::math::mint_s63<469762049>; + using mint2 = tifa_libs::math::mint_s63<754974721>; using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; #endif - #ifdef GENTC_3ntt_ss_d63 + #ifdef GENTC_3ntt_s63_d63 #include "../../code/conv/conv_3ntt.hpp" #include "../../code/math/mint_d63.hpp" - #include "../../code/math/mint_ss.hpp" + #include "../../code/math/mint_s63.hpp" using mint = tifa_libs::math::mint_d63<-1>; - using mint0 = tifa_libs::math::mint_ss<167772161>; - using mint1 = tifa_libs::math::mint_ss<469762049>; - using mint2 = tifa_libs::math::mint_ss<754974721>; - using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; - #endif - #ifdef GENTC_3ntt_ss_ds - #include "../../code/conv/conv_3ntt.hpp" - #include "../../code/math/mint_ds.hpp" - #include "../../code/math/mint_ss.hpp" - - using mint = tifa_libs::math::mint_ds<-1>; - using mint0 = tifa_libs::math::mint_ss<167772161>; - using mint1 = tifa_libs::math::mint_ss<469762049>; - using mint2 = tifa_libs::math::mint_ss<754974721>; + using mint0 = tifa_libs::math::mint_s63<167772161>; + using mint1 = tifa_libs::math::mint_s63<469762049>; + using mint2 = tifa_libs::math::mint_s63<754974721>; using ntt3_t = std::tuple, tifa_libs::math::NTT, tifa_libs::math::NTT>; #endif @@ -295,16 +212,10 @@ mintd1: | #ifdef GENTC_3ntt_s30_d63 mint::set_mod(MOD); #endif - #ifdef GENTC_3ntt_s30_ds + #ifdef GENTC_3ntt_s63_d31 mint::set_mod(MOD); #endif - #ifdef GENTC_3ntt_ss_d31 - mint::set_mod(MOD); - #endif - #ifdef GENTC_3ntt_ss_d63 - mint::set_mod(MOD); - #endif - #ifdef GENTC_3ntt_ss_ds + #ifdef GENTC_3ntt_s63_d63 mint::set_mod(MOD); #endif @@ -332,51 +243,27 @@ czts: | using mint3 = tifa_libs::math::mint_s30<754974721>; using poly = tifa_libs::math::poly3ntt; #endif - #ifdef GENTC_czt_p3ntt_s30_ss + #ifdef GENTC_czt_p3ntt_s63_s30 #include "../../code/conv/conv_czt.hpp" #include "../../code/math/mint_s30.hpp" - #include "../../code/math/mint_ss.hpp" - #include "../../code/poly/poly3ntt.hpp" - - using mint = tifa_libs::math::mint_ss; - using mint1 = tifa_libs::math::mint_s30<167772161>; - using mint2 = tifa_libs::math::mint_s30<469762049>; - using mint3 = tifa_libs::math::mint_s30<754974721>; - using poly = tifa_libs::math::poly3ntt; - #endif - #ifdef GENTC_czt_p3ntt_ss_s30 - #include "../../code/conv/conv_czt.hpp" - #include "../../code/math/mint_s30.hpp" - #include "../../code/math/mint_ss.hpp" + #include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; - using mint1 = tifa_libs::math::mint_ss<167772161>; - using mint2 = tifa_libs::math::mint_ss<469762049>; - using mint3 = tifa_libs::math::mint_ss<754974721>; + using mint1 = tifa_libs::math::mint_s63<167772161>; + using mint2 = tifa_libs::math::mint_s63<469762049>; + using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; #endif - #ifdef GENTC_czt_p3ntt_ss_s63 + #ifdef GENTC_czt_p3ntt_s63_s63 #include "../../code/conv/conv_czt.hpp" #include "../../code/math/mint_s63.hpp" - #include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; - using mint1 = tifa_libs::math::mint_ss<167772161>; - using mint2 = tifa_libs::math::mint_ss<469762049>; - using mint3 = tifa_libs::math::mint_ss<754974721>; - using poly = tifa_libs::math::poly3ntt; - #endif - #ifdef GENTC_czt_p3ntt_ss_ss - #include "../../code/conv/conv_czt.hpp" - #include "../../code/math/mint_ss.hpp" - #include "../../code/poly/poly3ntt.hpp" - - using mint = tifa_libs::math::mint_ss; - using mint1 = tifa_libs::math::mint_ss<167772161>; - using mint2 = tifa_libs::math::mint_ss<469762049>; - using mint3 = tifa_libs::math::mint_ss<754974721>; + using mint1 = tifa_libs::math::mint_s63<167772161>; + using mint2 = tifa_libs::math::mint_s63<469762049>; + using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; #endif #ifdef GENTC_czt_pntt_s30 @@ -395,14 +282,6 @@ czts: | using mint = tifa_libs::math::mint_s63; using poly = tifa_libs::math::polyntt; #endif - #ifdef GENTC_czt_pntt_ss - #include "../../code/conv/conv_czt.hpp" - #include "../../code/math/mint_ss.hpp" - #include "../../code/poly/polyntt.hpp" - - using mint = tifa_libs::math::mint_ss; - using poly = tifa_libs::math::polyntt; - #endif cztd0: | #ifdef GENTC_czt_p3ntt_s30_d31 @@ -429,52 +308,28 @@ cztd0: | using mint3 = tifa_libs::math::mint_s30<754974721>; using poly = tifa_libs::math::poly3ntt; #endif - #ifdef GENTC_czt_p3ntt_s30_ds - #include "../../code/conv/conv_czt.hpp" - #include "../../code/math/mint_ds.hpp" - #include "../../code/math/mint_s30.hpp" - #include "../../code/poly/poly3ntt.hpp" - - using mint = tifa_libs::math::mint_ds<-1>; - using mint1 = tifa_libs::math::mint_s30<167772161>; - using mint2 = tifa_libs::math::mint_s30<469762049>; - using mint3 = tifa_libs::math::mint_s30<754974721>; - using poly = tifa_libs::math::poly3ntt; - #endif - #ifdef GENTC_czt_p3ntt_ss_d31 + #ifdef GENTC_czt_p3ntt_s63_d31 #include "../../code/conv/conv_czt.hpp" #include "../../code/math/mint_d31.hpp" - #include "../../code/math/mint_ss.hpp" + #include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; - using mint1 = tifa_libs::math::mint_ss<167772161>; - using mint2 = tifa_libs::math::mint_ss<469762049>; - using mint3 = tifa_libs::math::mint_ss<754974721>; + using mint1 = tifa_libs::math::mint_s63<167772161>; + using mint2 = tifa_libs::math::mint_s63<469762049>; + using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; #endif - #ifdef GENTC_czt_p3ntt_ss_d63 + #ifdef GENTC_czt_p3ntt_s63_d63 #include "../../code/conv/conv_czt.hpp" #include "../../code/math/mint_d63.hpp" - #include "../../code/math/mint_ss.hpp" + #include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; - using mint1 = tifa_libs::math::mint_ss<167772161>; - using mint2 = tifa_libs::math::mint_ss<469762049>; - using mint3 = tifa_libs::math::mint_ss<754974721>; - using poly = tifa_libs::math::poly3ntt; - #endif - #ifdef GENTC_czt_p3ntt_ss_ds - #include "../../code/conv/conv_czt.hpp" - #include "../../code/math/mint_ds.hpp" - #include "../../code/math/mint_ss.hpp" - #include "../../code/poly/poly3ntt.hpp" - - using mint = tifa_libs::math::mint_ds<-1>; - using mint1 = tifa_libs::math::mint_ss<167772161>; - using mint2 = tifa_libs::math::mint_ss<469762049>; - using mint3 = tifa_libs::math::mint_ss<754974721>; + using mint1 = tifa_libs::math::mint_s63<167772161>; + using mint2 = tifa_libs::math::mint_s63<469762049>; + using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; #endif #ifdef GENTC_czt_pmtt_d31 @@ -493,14 +348,6 @@ cztd0: | using mint = tifa_libs::math::mint_d63<-1>; using poly = tifa_libs::math::polymtt; #endif - #ifdef GENTC_czt_pmtt_ds - #include "../../code/conv/conv_czt.hpp" - #include "../../code/math/mint_ds.hpp" - #include "../../code/poly/polymtt.hpp" - - using mint = tifa_libs::math::mint_ds<-1>; - using poly = tifa_libs::math::polymtt; - #endif cztd1: | #ifdef GENTC_czt_p3ntt_s30_d31 @@ -509,16 +356,10 @@ cztd1: | #ifdef GENTC_czt_p3ntt_s30_d63 mint::set_mod(MOD); #endif - #ifdef GENTC_czt_p3ntt_s30_ds - mint::set_mod(MOD); - #endif - #ifdef GENTC_czt_p3ntt_ss_d31 + #ifdef GENTC_czt_p3ntt_s63_d31 mint::set_mod(MOD); #endif - #ifdef GENTC_czt_p3ntt_ss_d63 - mint::set_mod(MOD); - #endif - #ifdef GENTC_czt_p3ntt_ss_ds + #ifdef GENTC_czt_p3ntt_s63_d63 mint::set_mod(MOD); #endif #ifdef GENTC_czt_pmtt_d31 @@ -527,9 +368,6 @@ cztd1: | #ifdef GENTC_czt_pmtt_d63 mint::set_mod(MOD); #endif - #ifdef GENTC_czt_pmtt_ds - mint::set_mod(MOD); - #endif mtts: | #ifdef GENTC_mtt_s30 @@ -544,12 +382,6 @@ mtts: | using mint = tifa_libs::math::mint_s63; #endif - #ifdef GENTC_mtt_ss - #include "../../code/conv/conv_mtt.hpp" - #include "../../code/math/mint_ss.hpp" - - using mint = tifa_libs::math::mint_ss; - #endif mttd0: | #ifdef GENTC_mtt_d31 @@ -564,12 +396,6 @@ mttd0: | using mint = tifa_libs::math::mint_d63<-1>; #endif - #ifdef GENTC_mtt_ds - #include "../../code/conv/conv_mtt.hpp" - #include "../../code/math/mint_ds.hpp" - - using mint = tifa_libs::math::mint_ds<-1>; - #endif mttd1: | #ifdef GENTC_mtt_d31 @@ -578,9 +404,6 @@ mttd1: | #ifdef GENTC_mtt_d63 mint::set_mod(MOD); #endif - #ifdef GENTC_mtt_ds - mint::set_mod(MOD); - #endif dftntt: | #ifdef GENTC_ntt_s30 @@ -599,14 +422,6 @@ dftntt: | using mint = tifa_libs::math::mint_s63; using ntt_t = tifa_libs::math::NTT; #endif - #ifdef GENTC_ntt_ss - #include "../../code/conv/conv_dft.hpp" - #include "../../code/conv/ntt.hpp" - #include "../../code/math/mint_ss.hpp" - - using mint = tifa_libs::math::mint_ss; - using ntt_t = tifa_libs::math::NTT; - #endif ntt: | #ifdef GENTC_ntt_s30 @@ -623,13 +438,6 @@ ntt: | using mint = tifa_libs::math::mint_s63; using ntt_t = tifa_libs::math::NTT; #endif - #ifdef GENTC_ntt_ss - #include "../../code/conv/ntt.hpp" - #include "../../code/math/mint_ss.hpp" - - using mint = tifa_libs::math::mint_ss; - using ntt_t = tifa_libs::math::NTT; - #endif p3ntts: | #ifdef GENTC_p3ntt_s30_s30 @@ -653,47 +461,25 @@ p3ntts: | using mint3 = tifa_libs::math::mint_s30<754974721>; using poly = tifa_libs::math::poly3ntt; #endif - #ifdef GENTC_p3ntt_s30_ss - #include "../../code/math/mint_s30.hpp" - #include "../../code/math/mint_ss.hpp" - #include "../../code/poly/poly3ntt.hpp" - - using mint = tifa_libs::math::mint_ss; - using mint1 = tifa_libs::math::mint_s30<167772161>; - using mint2 = tifa_libs::math::mint_s30<469762049>; - using mint3 = tifa_libs::math::mint_s30<754974721>; - using poly = tifa_libs::math::poly3ntt; - #endif - #ifdef GENTC_p3ntt_ss_s30 + #ifdef GENTC_p3ntt_s63_s30 #include "../../code/math/mint_s30.hpp" - #include "../../code/math/mint_ss.hpp" + #include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s30; - using mint1 = tifa_libs::math::mint_ss<167772161>; - using mint2 = tifa_libs::math::mint_ss<469762049>; - using mint3 = tifa_libs::math::mint_ss<754974721>; + using mint1 = tifa_libs::math::mint_s63<167772161>; + using mint2 = tifa_libs::math::mint_s63<469762049>; + using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; #endif - #ifdef GENTC_p3ntt_ss_s63 + #ifdef GENTC_p3ntt_s63_s63 #include "../../code/math/mint_s63.hpp" - #include "../../code/math/mint_ss.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_s63; - using mint1 = tifa_libs::math::mint_ss<167772161>; - using mint2 = tifa_libs::math::mint_ss<469762049>; - using mint3 = tifa_libs::math::mint_ss<754974721>; - using poly = tifa_libs::math::poly3ntt; - #endif - #ifdef GENTC_p3ntt_ss_ss - #include "../../code/math/mint_ss.hpp" - #include "../../code/poly/poly3ntt.hpp" - - using mint = tifa_libs::math::mint_ss; - using mint1 = tifa_libs::math::mint_ss<167772161>; - using mint2 = tifa_libs::math::mint_ss<469762049>; - using mint3 = tifa_libs::math::mint_ss<754974721>; + using mint1 = tifa_libs::math::mint_s63<167772161>; + using mint2 = tifa_libs::math::mint_s63<469762049>; + using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; #endif @@ -720,48 +506,26 @@ p3nttd0: | using mint3 = tifa_libs::math::mint_s30<754974721>; using poly = tifa_libs::math::poly3ntt; #endif - #ifdef GENTC_p3ntt_s30_ds - #include "../../code/math/mint_ds.hpp" - #include "../../code/math/mint_s30.hpp" - #include "../../code/poly/poly3ntt.hpp" - - using mint = tifa_libs::math::mint_ds<-1>; - using mint1 = tifa_libs::math::mint_s30<167772161>; - using mint2 = tifa_libs::math::mint_s30<469762049>; - using mint3 = tifa_libs::math::mint_s30<754974721>; - using poly = tifa_libs::math::poly3ntt; - #endif - #ifdef GENTC_p3ntt_ss_d31 + #ifdef GENTC_p3ntt_s63_d31 #include "../../code/math/mint_d31.hpp" - #include "../../code/math/mint_ss.hpp" + #include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d31<-1>; - using mint1 = tifa_libs::math::mint_ss<167772161>; - using mint2 = tifa_libs::math::mint_ss<469762049>; - using mint3 = tifa_libs::math::mint_ss<754974721>; + using mint1 = tifa_libs::math::mint_s63<167772161>; + using mint2 = tifa_libs::math::mint_s63<469762049>; + using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; #endif - #ifdef GENTC_p3ntt_ss_d63 + #ifdef GENTC_p3ntt_s63_d63 #include "../../code/math/mint_d63.hpp" - #include "../../code/math/mint_ss.hpp" + #include "../../code/math/mint_s63.hpp" #include "../../code/poly/poly3ntt.hpp" using mint = tifa_libs::math::mint_d63<-1>; - using mint1 = tifa_libs::math::mint_ss<167772161>; - using mint2 = tifa_libs::math::mint_ss<469762049>; - using mint3 = tifa_libs::math::mint_ss<754974721>; - using poly = tifa_libs::math::poly3ntt; - #endif - #ifdef GENTC_p3ntt_ss_ds - #include "../../code/math/mint_ds.hpp" - #include "../../code/math/mint_ss.hpp" - #include "../../code/poly/poly3ntt.hpp" - - using mint = tifa_libs::math::mint_ds<-1>; - using mint1 = tifa_libs::math::mint_ss<167772161>; - using mint2 = tifa_libs::math::mint_ss<469762049>; - using mint3 = tifa_libs::math::mint_ss<754974721>; + using mint1 = tifa_libs::math::mint_s63<167772161>; + using mint2 = tifa_libs::math::mint_s63<469762049>; + using mint3 = tifa_libs::math::mint_s63<754974721>; using poly = tifa_libs::math::poly3ntt; #endif @@ -772,16 +536,10 @@ p3nttd1: | #ifdef GENTC_p3ntt_s30_d63 mint::set_mod(MOD); #endif - #ifdef GENTC_p3ntt_s30_ds - mint::set_mod(MOD); - #endif - #ifdef GENTC_p3ntt_ss_d31 - mint::set_mod(MOD); - #endif - #ifdef GENTC_p3ntt_ss_d63 + #ifdef GENTC_p3ntt_s63_d31 mint::set_mod(MOD); #endif - #ifdef GENTC_p3ntt_ss_ds + #ifdef GENTC_p3ntt_s63_d63 mint::set_mod(MOD); #endif @@ -800,13 +558,6 @@ pmtts: | using mint = tifa_libs::math::mint_s63; using poly = tifa_libs::math::polymtt; #endif - #ifdef GENTC_pmtt_ss - #include "../../code/math/mint_ss.hpp" - #include "../../code/poly/polymtt.hpp" - - using mint = tifa_libs::math::mint_ss; - using poly = tifa_libs::math::polymtt; - #endif pmttd0: | #ifdef GENTC_pmtt_d31 @@ -823,13 +574,6 @@ pmttd0: | using mint = tifa_libs::math::mint_d63<-1>; using poly = tifa_libs::math::polymtt; #endif - #ifdef GENTC_pmtt_ds - #include "../../code/math/mint_ds.hpp" - #include "../../code/poly/polymtt.hpp" - - using mint = tifa_libs::math::mint_ds<-1>; - using poly = tifa_libs::math::polymtt; - #endif pmttd1: | #ifdef GENTC_pmtt_d31 @@ -838,9 +582,6 @@ pmttd1: | #ifdef GENTC_pmtt_d63 mint::set_mod(MOD); #endif - #ifdef GENTC_pmtt_ds - mint::set_mod(MOD); - #endif pntt: | #ifdef GENTC_pntt_s30 @@ -857,10 +598,3 @@ pntt: | using mint = tifa_libs::math::mint_s63; using poly = tifa_libs::math::polyntt; #endif - #ifdef GENTC_pntt_ss - #include "../../code/math/mint_ss.hpp" - #include "../../code/poly/polyntt.hpp" - - using mint = tifa_libs::math::mint_ss; - using poly = tifa_libs::math::polyntt; - #endif