直接構造計數模型:設兩組數a,b分別有n個和m個(n>=m)數且各不相同,考慮從b中取出k(k=0,1,......,m)個數,然後再從a中和這k個數中取出m個數的方案數。
首先按照原定義,顯然得左邊那個式子。
然後換種方法計數,我們把這些方案按照所取到的a中的數的個數分類,則可以分成m+1類(分別對應從a中取了0,1,......m個數),計算每一類的個數然後相加就是總方案數。第k類的個數這樣算,先從a中取出k個數,共有C(n,k)種取法。則按定義還需要從b中取出m-k個數,有C(m,m-k)=C(m,k)種取法,而按照定義的取法,則每種取法都被重複計算了,被計算的次數就是b的子集中所有包含這m-k個數的子集數,即在m個數中包含特定的m-k個數的子集數量。考慮除了這m-k個數的其它k個數,共計可形成2^k個子集,這些子集中的任意一個都可以和這m-k個數拼成一個不同的集合(從而導致這m-k個數被計算了一次)。所以b中任意m-k個數都被計算了2^k次,所以從a中取了k個數的滿足定義的方案共有C(n,k)*C(m,k)*2^k個,累加起來即得右邊。
從而左邊等於右邊。
這種型別題應該都是可以用生成函式做的(是通法),但是構造計數模型本身也是一個很有趣的過程,值得探究
直接構造計數模型:設兩組數a,b分別有n個和m個(n>=m)數且各不相同,考慮從b中取出k(k=0,1,......,m)個數,然後再從a中和這k個數中取出m個數的方案數。
首先按照原定義,顯然得左邊那個式子。
然後換種方法計數,我們把這些方案按照所取到的a中的數的個數分類,則可以分成m+1類(分別對應從a中取了0,1,......m個數),計算每一類的個數然後相加就是總方案數。第k類的個數這樣算,先從a中取出k個數,共有C(n,k)種取法。則按定義還需要從b中取出m-k個數,有C(m,m-k)=C(m,k)種取法,而按照定義的取法,則每種取法都被重複計算了,被計算的次數就是b的子集中所有包含這m-k個數的子集數,即在m個數中包含特定的m-k個數的子集數量。考慮除了這m-k個數的其它k個數,共計可形成2^k個子集,這些子集中的任意一個都可以和這m-k個數拼成一個不同的集合(從而導致這m-k個數被計算了一次)。所以b中任意m-k個數都被計算了2^k次,所以從a中取了k個數的滿足定義的方案共有C(n,k)*C(m,k)*2^k個,累加起來即得右邊。
從而左邊等於右邊。
這種型別題應該都是可以用生成函式做的(是通法),但是構造計數模型本身也是一個很有趣的過程,值得探究