对于 组合数 取模的各种情况

1、当 n,m1000p 为任意数时

可以使用暴力(O(n2))求解 杨辉三角 的方式,计算

(nm)=(n1m1)(n1m)


2、当 n,m106p109p 为素数时

利用公式

(nm)=n!m!(nm)!modp

O(n) 预处理阶乘,然后求逆元。


3、当 n106m1000p 为任意数时

(nm)=n!m!(nm)!=n×(n1)×(nm+1)1×2×3××m

因为组合数一定为整数,然后可以尝试约分,得到

(nm)=x1×x2×x3××xm


4、当 n,m109p1000p 为素数时

因为 p 的范围较小,且 p 为素数,考虑 Lucas定理 求解,

(nm)modp=(n/pm/p)(nmodpmmodp)modp

posted @   Ciaxin  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示