这几天主要任务还是在做组合数学相关的练习题,感觉组合数学很大部分都是关于容斥原理的,基础容斥:ans=整除1个元素个数-整除2个元素个数+整除3个元素个数-整除4个元素个数+....
其次用到比较多的就是Lucas定理,Lucas定理是用来求 c(n,m) mod p,p为素数的个数。其基本表达式为:Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p) 其次求c(n,m) mod p的基本公式相除时需要用到逆元
再就是卡特兰大数问题,掌握了卡特兰的基本递推公式,用Java处理大数问题即可解决。
卡特兰的公式有如下:
h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)*h(0) (n>=2)
h(n)=C(2n,n)-C(2n,n-1)
h(n)=C(2n,n)/(n+1);
h(n)=h(n-1)*(4*n-2)/(n+1) //递推求解主要用该公式
长路漫漫,继续加油!!!