自然数幂和
自然数幂和问题
给定
拉格朗日插值解法
给出拉格朗日插值的式子:
容易看出计算
对于原问题,显然
根据第二类斯特林数的经典结论,我们有:
设
则原式可以化为:
其中,后者是一个
代码:
int x[N],y[N],n,k,sum;
int jie[N],invjie[N];
inline int ksm(int a,int b,int mod){
int res=1;while(b){if(b&1)res=1ll*res*a%mod;a=1ll*a*a%mod;b>>=1;}return res;
}
inline int inv(int x){return ksm(x,mod-2,mod);}
inline int Leg(int h){
sum=1;rep(i,1,k+2) sum=1ll*sum*(h-x[i])%mod;
rep(i,1,k+2) x[i]=sum*inv(h-x[i])%mod;
int ans=0;
rep(i,1,k+2){
ans=(ans+y[i]*x[i]%mod*invjie[i-1]%mod*invjie[k+2-i]%mod*(((k+2-i)&1)?(mod-1):1)%mod)%mod;
}
return ans;
}
signed main(){
read(n);read(k);jie[0]=1;
rep(i,1,k+2) jie[i]=jie[i-1]*i%mod;invjie[k+2]=inv(jie[k+2]);
dec(i,0,k+1) invjie[i]=invjie[i+1]*(i+1)%mod;
rep(i,1,k+2){
x[i]=i;y[i]=(ksm(i,k,mod)+y[i-1])%mod;
}
if(n<=k+2){
printf("%lld\n",y[n]);
}
else{
int ans=Leg(n);
printf("%lld\n",ans%mod);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现