国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

bzoj2839 關于組合數的若干yy

2019-11-06 09:23:57
字體:
來源:轉載
供稿:網友

考慮容斥,最后的答案為∑ni=k(?1)i?k?Cin?Cki?(22n?i?1) 實際上-1和最后一部分并不需要解釋,然后我們看看如何證明這個的正確性。


辣雞的證明

關于普通的容斥原理,我們可以用二項式定理yy 當我們發現對于每一個交集大小為n的選法,他最后被統計的次數是這個. ∑ni=k(?1)i?kCin?Cki由于我菜,就上uoj群問了一發,釗神說這似乎是證明二項式反演的啥啥玩意兒orz. 我們根據組合數的公式,有 Cin?Cki=Ckn?Ci?kn?k

那么 ∑ni=k(?1)i?kCin?Cki=0  (k<n) =∑ni=k(?1)i?kCi?kn?k=0  (k<n) =Ckn∑ni=k(?1)i?k?Ci?kn?k=0  (k<n) =Ckn(1?1)n?k 考慮這個式子,當n>k的時候,他=0,當n=k時,他=1.這就說明我們最后只算了交集為k的情況.


丑陋的代碼

#include<cstdio>#include<algorithm>const int P = 1e9 + 7, N = 1e6 + 8;int n, k;typedef long long ll;ll la = 2, res, jc[N], jc_rev[N];ll C (int n, int m) { if (m > n) return 0; return jc[n] * jc_rev[m] % P * jc_rev[n - m] % P;}ll quick_power (ll A, int B) { ll C = 1; for (; B; B >>= 1, A = A * A % P) if (B & 1) C = C * A % P; return C;}int main () { scanf ("%d%d", &n, &k); jc[0] = 1; for (int i = 1; i <= n; ++i) jc[i] = jc[i - 1] * i % P; jc_rev[n] = quick_power (jc[n], P - 2); for (int i = n - 1; ~i; --i) jc_rev[i] = jc_rev[i + 1] * (i + 1) % P; for (int i = n, fu = 1; i >= k; --i, fu = -fu, la = la * la % P) { res = ((la - 1) * C (i, k) % P * C (n, i) - res) % P; } PRintf ("%lld/n", (res + P) % P); return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 疏勒县| 兴安县| 安阳县| 津南区| 淮南市| 太和县| 民勤县| 琼结县| 社会| 轮台县| 丰镇市| 灌阳县| 谢通门县| 抚顺县| 铁力市| 福建省| 修武县| 上犹县| 辽阳市| 巴东县| 浙江省| 苗栗县| 吉隆县| 英吉沙县| 永福县| 盐亭县| 镇安县| 乌兰浩特市| 平定县| 桂林市| 施甸县| 鄂托克前旗| 鲁甸县| 名山县| 万宁市| 广水市| 双柏县| 兰州市| 藁城市| 邮箱| 宜章县|