码迷,mamicode.com
首页 > 其他好文 > 详细

P3807 【模板】卢卡斯定理

时间:2018-08-24 22:13:02      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:合数   一个   质数   play   ++   除法   cpp   lin   爱我   

P3807 【模板】卢卡斯定理

\(C_{m + n}^{m} \% p\) ( \(1\le n,m,p\le 10^5\) )


错误日志: 数组开小(洼地hi阿偶我姑父阿贺佛奥UFO爱我帮你)


Pre

好的我们继续恶补数学
首先复习一下 \(O(N)\) 求质数逆元的方法\[inv[1] = 1\]\[inv[i] = (p - p / i) * inv[p \% i] \% p (i >= 2)\]

LL inv[maxn];
void get_inv(LL n){
    inv[1] = 1;
    for(LL i = 2;i <= n;i++)inv[i] = (p - p / i) * inv[p % i] % p;
    }

然后是 \(O(m)\)\(C_{n}^{m} \% p\)\[C_{n}^{m}\% p = \frac{n!}{m!(n - m)!}\% p\]\[=\frac{(n - m + 1) * (n - m +2) * ... * n}{m!}\% p\]\[=(\frac{n - m + 1}{1}\% p) * (\frac{n - m + 2}{2}\% p) * ... * (\frac{n}{m}\% p)\]
其中除法取模可以用上面的逆元计算, 求解一个组合数的复杂度为 \(O(m)\)

P3807 【模板】卢卡斯定理

标签:合数   一个   质数   play   ++   除法   cpp   lin   爱我   

原文地址:https://www.cnblogs.com/Tony-Double-Sky/p/9532173.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!