1. 组合计数类的题目涉及内容和求解方法都比较多,也是一个难点,下图是组合计数中常用的方法:
组合数,排列数和卢卡斯定理的基本公式:
卡特兰数:
一般来说求解组合数可以使用递推,逆元,卢卡斯定理Lucas来求解,根据题目中给出的数据范围确定使用哪一种方法求解,如果数据范围在10 ^ 3之内那么可以使用递推或者逆元(取模的数字为质数)的方法求解,如果题目组合数的范围很大,并且质数小于组合数的情况下就需要使用卢卡斯定理来求解,如果看到第三项是5的时候那么需要想到卡特兰数(经验,一般与卡特兰数脱不了关系)。只有当题目中取模的数字为质数并且组合数的底数小于取模的数字那么才可以使用费马小定理求解逆元,当取模的数字不是质数的时候那么是不好求解逆元的,那么可以使用分解质因数的方式来求解,这样阶乘的形式就会变成若干个质因子相乘的形式,这样可以避免求解逆元的问题(分解质因数 + 快速幂)。
2. 如果求解的是n个未知数的不定方程的正整数解的方案数目的时候可以使用隔板法来解决,那么不定方程的正整数解的个数为Cm-1n-1:
当xi为非负整数的时候我们可以做一个映射,使得方程中每一个未知数都是大于等于1的,具体来说当xi >= 0的时候可以映射为yi = xi + 1,此时yi >= 1,此时不定方程解的个数为Cm+n-1n-1:
如果为不定方程,相当于小球不用用完,那么我们需要在m 个空隙中放置n个隔板,第一个小球到第一个隔板之间的小球数量为x1,第一个隔板到第二个隔板的小球的数量为x2,...第n - 1个隔板到第n个隔板之间的小球为xn,则总共的方案数目为Cmn: