题意如下:
二项式系数C(n, k)因它在组合数学中的重要性而被广泛地研究。二项式系数可以如下递归的定义:
C(1, 0) = C(1, 1) = 1;
C(n, 0) = 1对于所有n > 0;
C(n, k) = C(n − 1, k − 1) + C(n − 1, k)对于所有0 < k ≤ n。
给出n和k,你要确定C(n, k)的奇偶性
我是用不怎么牛逼的做法 虽然也是0MS
The parity of C(n, k) can be determined by calculating the exponent of 2 in its factorization.
c(m,n) = m!/n!/(m-n)!
分别求出m,n,m-n三个阶乘里面有多少个2,只要m!中2的个数多余n!中2的个数加上(m-n)!中2的个数,那么结果就是偶数
CODE如下:
#include <stdio.h>
int main()
{
int n,m,k;
int a,b,c;
while(scanf("%d%d",&n,&k)!=EOF)
{
m=n-k; a=b=c=0;
while(n=n>>1) a+=n;
while(m=m>>1) b+=m;
while(k=k>>1) c+=k;
if(a-b>c) printf("0\n");
else printf("1\n");
}
}
牛逼的结论为····如果n&k==k就为奇数 否则就是偶数 看到了一个证明 但没有看懂···