组合数取模

来源:互联网 发布:nginx 二级域名转发 编辑:程序博客网 时间:2024/06/05 13:29

首先给出组合数计算方法:C(n, m) = n!/m!/(n-m)!.

公式中有除数,a / b % m != a % m / b % m. 但是 a / b % m = a * b' % m其中b'是b模m的逆元。

求逆元可以用拓展欧几里德。但是当模数m是质数时,可以用费马小定理求逆元。虽然求出来的不一定是最小逆元,对模运算来说,没关系的。

费马小定理:a^(m-1) 同余 1 模 m。其中m为质数。那么a模m的一个乘法逆元就是a^(m-2)。

当模数m较大时,a^(m-2)会爆long long. 那么就要用快速幂运算了。



原创粉丝点击