判断组合数奇偶
作者:互联网
结论
先说结论
对于组合数\(C^k_n\),若n&k==k,则其为奇数,否则,其为偶数。
证明
\(C^k_n=\frac{n!}{k!(n-k)!}\)
我们用a表示n!中因子2的个数
b表示k!中因子2的个数
c表示(n-k)!中因子2的个数
显然有\(a\ge b+c\)(因为\(C^k_n\)一定为整数),如果a==b+c,那么\(C^k_n\)一定为奇数,若a>b+c\(,C^k_n\)为偶数
而n!中因子p(p为质因数)的个数为\([\frac{n}{p}]+[\frac{n}{p^2}]+[\frac{n}{p^3}]...\)
[]表示向下取整。
假设n=13,p=2
13/2=6,那么2,4,6,8,10,12共6个数能提供1个因子2
13/4=3,那么4,8,12,共3个数能提供2个因子2
13/8=1,那么8能提供3个因子2
13/16=0
6+3+1=10即可得到13!中因子2的个数
假设\(n=2^m\),及n为2的幂次方,那么n!中因子2的个数为\([\frac{2^m}{2}]+[\frac{2^m}{2^2}]+...\)
上式是一个等比数列,求和的结果为\(2^m-1=n-1\)
再来看当\(n!=2^m\)那么可以将n拆成2的幂次方之和(二进制),\(n=2^{x_1}+2^{x_2}+...\)
将上式带入即 \([\frac{2^{x_1}+2^{x_2}+...}{2}]+[\frac{2^{x_1}+2^{x_2}+...}{2^2}]+...=[\frac{2^{x_1}}{2}]+[\frac{2^{x_1}}{2^2}]+...+[\frac{2^{x_2}}{2}]+[\frac{2^{x_2}}{2^2}]...=2^{x_1}-1+2^{x_2}-1...=n-cnt\)
cnt表示n中二进制为1的个数
那么现在,若n&k==k,即k中二进制为1的位在n中也为1,现在令cnt(x)表示x中二进制为1的位数,则有cnt(n-k)=cnt(n)-cnt(k),带入上面推出来的结论就有\(a==b+c\)
反之,若n&k!=k,则\(cnt(n-k)!=cnt(n)-cnt(k)\)(这里还没想到好的证明方法,反正由于借位二进制为1的个数肯定会发生变化,那么就不相等了),即\(a!=b+c\)
标签:奇偶,cnt,判断,frac,组合,个数,13,因子,+... 来源: https://www.cnblogs.com/hetailang/p/16632644.html