題意如下:
二項式系數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就為奇數 否則就是偶數 看到了一個證明 但沒有看懂···