library_checker/convolution/
lcm_convolution.rs1use competitive::prelude::*;
2use competitive::{
3 algebra::AddMulOperation,
4 math::{ConvolveSteps, LcmConvolve},
5 num::montgomery::MInt998244353 as M,
6};
7
8#[verify::library_checker("lcm_convolution")]
9pub fn lcm_convolution(reader: impl Read, writer: impl Write) {
10 prepare_io!(reader, writer);
11 sc!(n, mut a: [M; n], mut b: [M; n]);
12 a.insert(0, Default::default());
13 b.insert(0, Default::default());
14 let c = LcmConvolve::<AddMulOperation<_>>::convolve(a, b);
15 pp!(@it &c[1..]);
16}