C - Sum of Three Integers 解説 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\) 倍速くなります。

投稿日時:
最終更新: