浅谈卢卡斯定理

模板题在这里

卢卡斯定理适用于求解组合数取模,而且模数为质数且不大的情况。

具体地,卢卡斯定理可以这样表示

$$C_n^m\mod p=C_{n/p}^{m/p}*C_{n\mod p}^{m\mod p}\mod p$$

我们首先预处理出一个阶乘数组,一个mod p的逆元数组,当数值较小时,我们可以直接使用组合数的计算公式$C_n^m=\frac{n!}{m!(n-m)!}$来计算

当数据较大时,我们采用迭代的思路,根据卢卡斯定理将数据缩小,这样,我们就能在O(logpn)的时间内解决问题

posted @ 2019-07-24 09:45  AD_shl  阅读(255)  评论(0编辑  收藏  举报