![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
组合数
这是简介
小鱼yn
简介
展开
-
2019ICPC南昌 C And and Pair dp(二项式定理 / dp)
给定一个非常大的非负整数n,计算满足以下条件的整数对(i ,j)(i\,,j)(i,j)的个数:1、0≤j≤i≤n;1、0≤j≤i≤n;1、0≤j≤i≤n;2、i&n=i;and2、i\&n=i;and2、i&n=i;and3、i&j=03、i\&j=03、i&j=0二项式在二进制的情况下,因为i&n=ii\&n=ii&n=i,所以:只有当n某一位为1时,i在这一位才能为1。因为i&j=0i\&j=0i&a原创 2020-06-27 15:12:43 · 267 阅读 · 0 评论 -
卢卡斯定理(n≤10^18,m≤10^18,p≤10^5,p为质数)
Lucas定理是用于处理组合数取模的定理,当m,n较大时使用它可以将一个大组合数取模,转化成很多小组合数相乘取模(n<p, m<p)模板:LL Lucas(LL n,LL m,LL p){ if(!m) return 1; return C(n%p,m%p,p)*Lucas(n/p,m/p,p)%p;}例题:P3807 【模板】卢卡斯定理代码:求后面...原创 2019-12-13 11:14:04 · 277 阅读 · 0 评论 -
逆元线性打表后求大组合数(m≤10^6)
逆元求组合数中作用就是讲公式中的除法取余转化为乘法取余,其实当m≤10^5时,都可以直接暴力求分子中每个因子的逆元(会用到快速幂),这里需要先求出p的欧拉函数值。 此处n,p的值在数据范围(10^18)内就行除了上面的思路,我们也可以O(n)打表得出1!~n!的逆元对p取模后的结果:求逆元的方法总结、打表,这时就不需要用到快速幂求逆元,但此时对n的范围就有要求了:n≤10^6, m≤10^6...原创 2019-12-13 11:13:53 · 293 阅读 · 0 评论 -
利用n!性质求大组合数(m≤10^5,m≤10^5)【n!中有多少个质因子p】
n!我们知道组合数的结果是一个整数,这个整数可以表示成若干个质因子的乘积,如:12=2×2×4,那么如果我们知道分子、分母中每个质因子出现的次数,就可以很容易得到组合数的值。我们可以在O(logn)O(log{n})O(logn)的复杂度内求出n里面每个质因子出现的次数,那么n!就需要O(nlogn)O(nlog{n})O(nlogn)的复杂度但这里想说的是关于n!的另外一个性质:怎么求n!...原创 2019-12-13 11:13:02 · 256 阅读 · 0 评论