反演板子怎么能没有反演题解 || solution - P4071
组合意义天地灭,代数推导保平安。
二项式反演板子。怎么能么没有反演的题解呢!
注意到题目要求「恰好
令
然后求
把两个式子放到一起:
把组合数拆成阶乘形式,可以得到:
然后发现后面那个求和就可以直接预处理一个前缀和来做了。
时间复杂度
// === / 走吧 就算我们无法让大雨停下 还有我 陪你在雨里放肆奔跑啊 / ===
int n,m,fac[N],finv[N],s[N];
il void solve()
{
read(n,m);
write(mod_(mod_(fac[n]*finv[m])*s[n-m]),'\n');
}
il void init()
{
finv[0]=finv[1]=fac[0]=fac[1]=1;
rep(i,2,N) finv[i]=mod_((mod-mod/i)*finv[mod%i]);
rep(i,2,N) fac[i]=mod_(fac[i-1]*i),finv[i]=mod_(finv[i-1]*finv[i]);
s[0]=1; rep(i,1,N-1) s[i]=mod_(s[i-1]+(i&1?-1:1)*finv[i]);
}
华风夏韵,洛水天依!