【闲话】2023.2.3 k 次加权组合数求和
1.【闲话】2023.1.27 斐波那契数列一个性质及推广
2.【闲话】2023.2.3 k 次加权组合数求和
问题引入 #
CodeForces-932E Team Work *2400
给出 ,求:
#
二项式定理:
#
组合恒等式证明#
根据组合数的定义,可以推出:
于是:
求导证明#
来自《组合数学》。
先带上一个 ,写成:
两边同时求导:
代入 的特殊情况:
#
再导!
观察发现这个 的稳定来源是 项求导,因此在上面代入前的式子再乘上一个 。
导:
代入 的特殊情况:
《组合数学》:通过交替关于 求导并乘以 ,我们可以得到对于任意 的恒等式,但随着 的增大,将会变得很复杂。
那就先不导剩下情况了。
一个正经的做法 #
本题可以 预处理第二类 Stirling 数做,在模数友好的情况下可以 NTT 求一行。
一个不正经的猜想 #
Jijidawang:我觉得它是 次多项式……
SoyTony:?
Jijidawang:……先除去 。
在刚刚的求 时,的确除 的部分像是 次多项式。
同时在 一定时,上面正经推导后得出的式子:
似乎也说明这是一个 次多项式。
目前我们已知 成立了,做差分试试:
好像一阶差分可以次数降 ,那么 次多项式就板上钉钉了。
最后来一发 Lagrange 插值看看实力。
点击查看代码
int n,k;
inline int q_pow(int A,int B,int P){
int res=1;
while(B){
if(B&1) res=1ll*res*A%P;
A=1ll*A*A%P;
B>>=1;
}
return res;
}
int Y[5005];
int C[5005][5005],pw[5005];
int fact,fact_inv[5005];
int pw2[5005],inv2=5e8+4;
int pre[5005],suf[5005];
inline int Lagrange(int X){
pre[0]=1,suf[k]=1;
for(int i=1;i<=k;++i) pre[i]=1ll*pre[i-1]*(X-(i-1)+mod)%mod;
for(int i=k-1;i>=0;--i) suf[i]=1ll*suf[i+1]*(X-(i+1)+mod)%mod;
int res=0;
for(int i=0;i<=k;++i){
int now=1ll*Y[i]*pre[i]%mod*suf[i]%mod*fact_inv[i]%mod*fact_inv[k-i]%mod;
if((k-i)&1) res=(res-now+mod)%mod;
else res=(res+now)%mod;
}
return res;
}
int main(){
n=read(),k=read();
C[0][0]=1;
for(int i=1;i<=k;++i){
C[i][0]=C[i][i]=1;
for(int j=1;j<i;++j){
C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
}
}
for(int i=1;i<=k;++i){
pw[i]=1;
for(int j=1;j<=k;++j){
pw[i]=1ll*pw[i]*i%mod;
}
}
fact=1,fact_inv[0]=1;
for(int i=1;i<=k;++i) fact=1ll*fact*i%mod;
fact_inv[k]=q_pow(fact,mod-2,mod);
for(int i=k-1;i>=1;--i) fact_inv[i]=1ll*fact_inv[i+1]*(i+1)%mod;
pw2[0]=q_pow(2,k,mod);
for(int i=1;i<=k;++i) pw2[i]=1ll*pw2[i-1]*inv2%mod;
for(int i=1;i<=k;++i){
for(int j=1;j<=i;++j){
Y[i]=(Y[i]+1ll*C[i][j]*pw[j]%mod)%mod;
}
Y[i]=1ll*Y[i]*pw2[i]%mod;
}
printf("%lld\n",1ll*Lagrange(n)*q_pow(2,(n-k+mod-1)%(mod-1),mod)%mod);
return 0;
}
通过了,实锤了。
最终章·导 #
前情提要:全是 Dirty Work,建议不阅读。
的情况:
长得还挺工整的,每次求导只增加一项,剩下可以合并。
乘完了 ,导:
于是系数满足:
换个写法:
非常神奇。
作者:SoyTony
出处:https://www.cnblogs.com/SoyTony/p/Flowers_on_Feb_3rd_2023.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
合集:
学术闲话
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效