Lucas定理及應用
阿新 • • 發佈:2018-06-21
應該 .com mda 什麽 範圍 這一 CA 你會 nbsp
額,前兩天剛講了數據結構,今天我來講講組合數學中的一種奇妙優化——Lucas
先看這樣一個東西
沒學過lucas的肯定會說:還不簡單?處理逆元,邊乘邊膜唄
是,可以,但註意一下數據範圍
你算這一次,你需要跑25000下
那麽你如果求C199999 1~C199999 52222 呢?
你會發現你的復雜度上天了
所以我們會用到一個神奇的定理:Lucas定理
定理內容如下:
Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p)
不好玩,是嗎?
那麽我來證明一下
由二項式定理可得,cmn等於(x+1)^m中n次項的系數
那麽我們按Lucas展開
原式=(x+1)^(p^k*ak)*(x+1)^(p^(k-1)*a(k-1))*……*(x+1)^(p*a1)+(x+1)^(1*a0)
=[(x+1)^(p^k)]^ak……
由費馬小定理可知,其%p後可轉化為 (x+1)^ak*(x+1)^a(k-1)*……*(x+1)^a1*(x+1)^a0
原題轉化為求上式的n次項的系數
同理,由於每一項已經消去了p^k次方 故即求每一項中的bk次項系數 即為Lucas
有什麽用呢?
以前的組合數,我們一位一位地算(累死了)
現在的組合數,我們只用算%p出來的(這不就是log p m次嗎?)
O(n)到O(logn)
大有長進啊
大家應該都會
下面看幾道好題
combination【bzoj2928】
裸的板子,不說什麽
《瞿葩的數字遊戲》T3-三角聖地
帶了預處理階乘的Lucas
[SHOI2015]超能粒子炮·改
lucas合並
禮物,古代豬文
擴展Lucas
Lucas定理及應用