Lucas定理

· · 个人记录

Lucas定理

\mathbb {Auther:Ervin}

组合数:

C_n^m=\dfrac{n!} {m!(n-m)!}

加上逆元,可以实现O(n)的做法

但是,如果nm很大呢??

比如要求C_n^m \ mod \ p,n\le 1e18,m\le 1e18, p\le 1e5

我们可以发现,nm非常大,但是p很小,我们就可以利用这个p

然后,我们著名的卢卡斯(Lucas)在人群中站了出来(`・д・´);"让老子来教你!"

$C_n^m\ mod\ p=C_{n/p}^{m/p}\times C_{c\% p}^{m\%p}\ mod\ p

对于C_{n/p}^{m/p},如果n/p还是很大,就可以一直递归下去