首先我们从n个整数的平方和开始,也就是求
S(n)=n∑i=1i2
我们可以尝试对S(n)进行扰动,就有
S(n)=n∑i=1(i+1)2−(n+1)2+1=n∑i=1(i2+2i+1)−(n+1)2+1=S(n)+2n∑i=1i−n(n+1)
然后我们发现扰动失败了,S(n)被消掉了,但是我们意外发现了求n∑i=1i的公式
于是我们猜测一下,是否可以用更高级的幂和C(n)=n∑i=1i3来求出S(n)
C(n)=n∑i=1(i+1)3−(n+1)3+1=n∑i=1(i3+3i2+3i+1)−(n+1)3+1=C(n)+3S(n)+3n(n+1)2−n(n+1)(n+2)⟹S(n)=n(n+1)(n+2)−3n(n+1)23=n(n+1)(2n+1)6
于是这样我们得到了S(n)的公式,既然如此,我们可以尝试着计算更高阶的幂和,我们设Sk(n)=n∑i=1ik,那么有
Sk(n)=n∑i=1ik=n∑i=1(i+1)k−(n+1)k+1=n∑i=1k∑j=0(kj)ij−(n+1)k+1=k∑j=0(kj)Sj(n)−(n+1)k+1
这样就有
Sk−1(n)=(n+1)k−k−2∑j=0(kj)Sj(n)−1k
或者可以写成
Sk(n)=(n+1)k+1−k−1∑j=0(k+1j)Sj(n)−1k+1
那么我们就可以在O(k2)的时间内计算Sk(n)了
其实我们可以在O(k)的时间内求出Sk(n),具体可见浅谈算法——拉格朗日插值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!