本文主要是介绍c(n,m) mod p 1 Lucas 定理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
普通的组合数C(n,m)在数据较小的情况下可以先用杨辉三角存储组合值,取模的话再%p即可。但是如果n,m很大,组合的结果自然很多,pascal自然不能完成任务,这样的取模问题可以使用数论里的Lucas定理来解决。数论Lucas定理是用来求 c(n,m) mod p的值,p是素数(从n取m组合,模上p)。
描述为:
Lucas(n,m,p)=Cm(n%p,m%p)* Lucas(n/p,m/p,p)
Lucas(x,0,p)=1;
而 这里的Cm(a,b)
(费马小定理,逆元)
看一个例子:http://acm.fzu.edu.cn/problem.php?pid=2020
P
这篇关于c(n,m) mod p 1 Lucas 定理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!