HDU 4349 Xiao Ming's Hope 组合数学

题意:给你n,问在C(n,1),C(n,2)...C(n,n)中有多少个奇数。

比赛的时候打表看出规律,这里给一个数学上的说明。

Lucas定理:A,B非负整数,p是质数,A,B化为p进制分别为a[n]a[n-1]...a[0],b[n]b[n-1]...b[0].

      那么组合数C(A,B)与C(a[n],b[n])*...*C(a[0],b[0])模p同余。

证明就不说了,我也不会,给个链接   Lucas定理证明

那再来看这道题就简单了,p=2,C(0,1)=0,C(1,0) = C(1,1) = 1,所以只要n的二进制中出现了0,在从0到n枚举的数的这个对应位上就可能是1或者0,是1的话呢结果就成了偶数了,所以只能填0,而n的二进制中是1的情况,不论枚举数的对应位是1还是0,只要保证了前一个条件,结果都可以保证是奇数,所以个数就是n的二进制数中1的个数了。

原文地址:https://www.cnblogs.com/macinchang/p/4700835.html