[方差+lucas定理] 51nod 演算法馬拉松25 D. 小Q的集合
題意
小Q有一個集合 S ,它的元素個數 |S|=n 。
對於 S 的任意一個子集合 T ,定義
小Q想知道,如果他等概率地選擇一個 S 的子集 T ,那麼 f(T)−f(S−T) 的方差是多少。
由於這個方差值可能很大,不妨設其為 v ,你只需要給出
k ≤ n ≤ 10^(10^6) , 1 ≤ k ≤ 10^6,其中m是質數,滿足2 ≤ m ≤ 10^6。
題解
方差的定義:
注意到E(x)恆為0,所以我們只需要計算
注意到n很大,肯定不能直接求。
注意到右邊的
這裡要用到lucas定理:
這個定理比較適合模數小的問題。
對於i mod m相同的每一組,
按這個思路,可得
內層那個sigma就和i無關了,每次都是一樣的,所以
直接求即可。
這題怎麼卡常啊,半天才過……
<