题解 |python 快速做法 组合恒等式 #小红的子序列权值和#
小红的子序列权值和
https://ac.nowcoder.com/acm/problem/269287
from collections import Counter n = int(input()) C = Counter(map(int,input().split())) a,b,c = C[1],C[2],C[3] mod = 1000000007 r = pow(2,n-2,mod) print((r*(b+2)*(c+2) - 1) % mod)
数学做法,利用组合恒等式
$ \Sigma_{i=0}^n (i+1)*C_n^i
= \Sigma_{i=0}^n i*C_n^i + \Sigma_i^n C_n^i
=n*2^{n-1} + 2^n $
= \Sigma_{i=0}^n i*C_n^i + \Sigma_i^n C_n^i
=n*2^{n-1} + 2^n $