【发布时间】:2014-04-10 21:57:26
【问题描述】:
如何以 M 为模求均匀分布的二项式系数的总和?
IE。 (nCa + nCa+r + nCa+2r + nCa+3r + ... + nCa+kr子>) % M = ?
给定:0 5, r
我的第一次尝试是:
int res = 0;
int mod=1000000009;
for (int k = 0; a + r*k <= n; k++) {
res = (res + mod_nCr(n, a+r*k, mod)) % mod;
}
但这不是有效的。所以看完here
而这个paper我发现上面的总和相当于:
求和[ω-ja * (1 + ωj)n / r],对于 0 i2π/r 是一个原始的 rth 单位根。
在 Order(r) 中找到这个总和的代码是什么?
编辑: n 可以达到 105,r 可以达到 100。
原问题出处:https://www.codechef.com/APRIL14/problems/ANUCBC
比赛问题的社论:https://discuss.codechef.com/t/anucbc-editorial/5113
6年后重温这篇文章后,我不记得我是如何将原始问题陈述转换为我的版本的,但是,我分享了原始解决方案的链接,以防有人想看看正确的解决方法.
【问题讨论】:
-
nCa 你的意思是C(k,n),来自n的k个元素的组合吗?
-
是的,更具体地说(n 选择 k MOD 1000000009)
-
请说明问题的根源并提供链接。
标签: c++ math combinations binomial-coefficients