概要
各項の寄与を考えてみましょう.
問題原案:kusirakusira
解説
∣S∣=∏A<(230)105 であり,現実的な実行時間で S の要素をすべて列挙して答えを求めることは不可能です.
そこで,A の各項が答えにどれだけ影響を与えるかを求め,それをすべての項に対して合計することを考えます.
P:=∏A とします.
i(1≤i≤N) 項目 (Xi とします) を固定したとき,その他の項の値の組み合わせとしてありうるものは A1×A2×⋯×Ai−1×Ai+1×⋯AN=AiP=:Wi 通りです.
そして,その Wi 通りについて Xi=1,2,…,Ai の場合をそれぞれ考え,その総和を求めればよいので,結局 i 項目の寄与は以下に等しいです:
- (1×Wi+2×Wi+⋯+Ai×Wi)=(1+2+⋯+Ai)Wi=21Ai(Ai+1)Wi=21Ai(Ai+1)AiP=21(Ai+1)P
これを各 i について足し合わせたものが答えであり,これは Θ(N) 時間などで求められます.
解説:uni_kakurenbo
実装例