Skip to content

Commit bf95bb7

Browse files
committed
feat: brute force when the size is small
1 parent 2694be8 commit bf95bb7

1 file changed

Lines changed: 12 additions & 0 deletions

File tree

src/alfred/math/conv.hpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,18 @@ inline std::vector<ModInt<mod>> add_conv(
130130
std::vector<ModInt<mod>> g
131131
) {
132132
if (f.empty() || g.empty()) return {};
133+
if (f.size() < g.size()) {
134+
std::swap(f, g);
135+
}
136+
if (g.size() < 128) {
137+
std::vector<ModInt<mod>> h(f.size() + g.size() - 1);
138+
for (size_t i = 0; i < f.size(); i++) {
139+
for (size_t j = 0; j < g.size(); j++) {
140+
h[i + j] += f[i] * g[j];
141+
}
142+
}
143+
return h;
144+
}
133145
int len = f.size() + g.size() - 1, lim;
134146
for (lim = 1; lim < len; lim <<= 1);
135147
f.resize(lim, 0), g.resize(lim, 0);

0 commit comments

Comments
 (0)