组合数的计算有好多方法,我慢慢填坑2333
1.$C_{n}^{k}=\frac{n-k+1}{k}C_{n}^{k-1}$
Proof:
$$C_{n}^{k}=\frac{n!}{k!(n-k)!}=\frac{n-k+1}{k}*\frac{n!}{(k-1)!(n-k+1)!}=\frac{n-k+1}{k}C_{n}^{k-1}.$$
利用此结论可非常快速有效的计算一个组合数了。
下给出代码:计算$C_{n}^{k}$(实际操作可将ans换成long long型)
1 int ans=1; 2 for(int i=1;i<=k;i++) { 3 ans=ans*(n-i+1)/i; 4 } 5 printf("%d\n",ans);
原文:https://www.cnblogs.com/Keynman/p/8850341.html