組合數奇偶性的判斷(附證明)

Learning

方法一:

計算一下,然後看它的奇偶性;但是這個時間以及數據範圍上都不允許;


方法二

對於給定C(n,m),檢查n!中2因子的個數與m!和(n-m)!中2因子個數和的關係,假設n!中2因子個數爲a,m!中2因子個數爲b,(n-m)!中2因子個數爲c,則顯然有a>=(b+c);並且當a==b+c時,一定爲奇,否則爲偶。


方法三

由方法2可以很容易(稍後給出證明)地看出,n!中含有2因子的個數等於(n-它的二進制形式中1的個數)(每除一次如果有1的話去掉一個1)。那麼題意再次轉化爲求m,n-m以及n的二進制形式中1的個數。或者說,看n&m ?= m,這個呢,如果等於,那麼也就意味着,所有m中爲1的位置n一定爲1,那麼n-m就可以直接用二進制減,這樣得到的差的二進制中1的個數加上m中二進制1的位數正好等於n中1的位數,由前面可以知道,這就是一個奇數。

【關於方法三的證明】
先證明,若n=2mn=2^m,n!中2因子的個數爲n1n-1(即2m12^m-1
首先我們知道一個計算n!中2因子個數的方法
ans=[n/(21)]+[n/(22)]+[n/(23)]+...1ans=[n/(2^1)]+[n/(2^2)]+[n/(2^3)]+...--(1)
那麼由於此時的n=2mn=2^m,上述式子就是一個等比數列,求和可得ans=2m1ans=2^m-1

推廣到更普遍的情況n!=2mn!=2^m
那麼我們肯定可以將n拆做:n=2x1+2x2+2x3+.....+2xm2n=2^{x1}+2^{x2}+2^{x3}+.....+2^{xm}--(2)
將(2)代入(1)中,再次由等比數列求和,可得ans=(2x11)+(2x21)+(2x31)+....+(2xm1)ans=(2^{x1}-1)+(2^{x2}-1)+(2^{x3}-1)+....+(2^{xm}-1)
然後打開括號~
完事兒

特別感謝stO ldx&cyk Orz

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章