只做梳理,不做证明 (因为不会证)
五边形数
图片摘自百度百科。

可以发现,gi=gi−1+3(i−1)+1,所以通向就是gi=2i(3i−1)
而广义的五边形数,i的取值为0,1,−1,2,−2,3,−3...,广义五边形数的前几项为:0,1,2,5,7,12,15,22,26...
欧拉函数
著名的欧拉函数ϕ(x),表示比x小的与x互质的数字个数,写出它的生成函数,经过一些奥妙重重的推理,有:
ϕ(x)=i=1∏n(1−xi)
然后经过一些奥妙重重的推理,有:
ϕ(x)=−inf∑inf(−1)ix2i(3i−1)
即
ϕ(x)=1−x−x2+x5+x7−x12−x15+...
拆分数
拆分数P(x),就是把x拆分成若干个正整数的方案数。例如对于3,有拆分3=1+1+1,3=1+2,3=3三种,所以P3=3
利用1取多少个,2取多少个,3取多少个,这样的思想,得到:
P(x)=i=1∏inf(j=0∑infxij)=i=1∏inf1−xi1
即P(x)ϕ(x)=1
暴力展开,除了0次项以外,每一项的系数都要为0,所以对于任意一个n,有:
Pn−Pn−1−Pn−2+Pn−5+Pn−7−Pn−12−Pn−15+...=0
由于五边形数的大小是平方级别的,所以我们可以在O(nn)的时间内算出1到n的五拆分数。