E - Sum of Sums of Restricted Sequences

2 secs 1024 MB
uni_kakurenbo's icon uni_kakurenbo

概要

各項の寄与を考えてみましょう.

問題原案:kusirakusira

解説

S=A<(230)105\displaystyle |S| = \prod A < (2^{30})^{10^5} であり,現実的な実行時間で SS の要素をすべて列挙して答えを求めることは不可能です.

そこで,AA の各項が答えにどれだけ影響を与えるかを求め,それをすべての項に対して合計することを考えます.

PAP \coloneqq \prod A とします.

i(1iN)i \scriptsize \; (1 \leq i \leq N) 項目 (XiX_i とします) を固定したとき,その他の項の値の組み合わせとしてありうるものは A1×A2××Ai1×Ai+1×AN=PAiWi\displaystyle A_1 \times A_2 \times \cdots \times A_{i-1} \times A_{i+1} \times \cdots A_N = \frac{P}{A_i} \eqqcolon W_i 通りです.

そして,その WiW_i 通りについて Xi=1,2,,AiX_i = 1, 2, \ldots, A_i の場合をそれぞれ考え,その総和を求めればよいので,結局 ii 項目の寄与は以下に等しいです:

  • (1×Wi+2×Wi++Ai×Wi)=(1+2++Ai)Wi=12Ai(Ai+1)Wi=12Ai(Ai+1)PAi=12(Ai+1)P(1 \times W_i + 2 \times W_i + \cdots + A_i \times W_i) \\ = (1 + 2 + \cdots + A_i) W_i \\ = \frac{1}{2}\,A_i \, (A_i + 1) W_i \\ = \frac{1}{2}\,A_i \, (A_i + 1) \frac{P}{A_i} \\ = \frac{1}{2}\, (A_i + 1) P \\

これを各 ii について足し合わせたものが答えであり,これは Θ(N)\Theta(N) 時間などで求められます.

解説:uni_kakurenbo

実装例

Python