C - Sum of Three Integers Editorial
by
potato167
公式解説の補足
https://atcoder.jp/contests/arc185/editorial/11124
「畳み込み後の要素の値は最大で \(10^{12}\) になるため」とありますが、これを回避することができます。
ある数 \(x\) が \(A\) の中に \(4\) つ以上含まれているとき、その \(x\) の出現回数を\(3\) 回に減らしても、答えの存在するしないは変わりません。よって、\(A\) の中に同じ要素は高々 \(3\) 回しか出現しないとして良いです。すると、 \(f\) の要素も \(3\) 以下になるので、畳み込んだとしても、その後の配列の要素は高々 \(3N\) になります。
よって畳み込みを\(\pmod{998244353}\) で計算すれば良いです。これは convolution_ll を使うよりも \(3\) 倍速くなります。
posted:
last update: