暑假总算是有时间来继续看看《具体数学》,发现提到了 ζ 函数,于是就想起去年多校有一道比较神仙但我并不是很会的题。今天在翻出来看看,貌似找到了一种相对自然的推导过程。
题目大意
给定 N,计算
(∫0+∞e1/τ−1τ−2N−1dτ)2∫0+∞e1/τ−1τ−4N−1dτ的值。可以证明结果是一个有理数。
1≤N≤105,共 105 组询问。
题解
前期的算式推导相对简单,直到得到这样一个式子
(ζ(2N)(2N−1)!)2ζ(4N)(4N−1)!问题就集中在如何求 ζ(4N) 以及 ζ(2N) 上。
实际上 Riemann ζ 函数在奇数处的取值不是很妙,因此我们只考虑偶数部分的生成函数
G(z)=n≥1∑ζ(2n)z2n=n≥1∑k≥1∑k2n1z2n=k≥1∑k2−z2z2接下来是整个推导过程中最精彩的一段——
G(z)=k≥1∑k2−z2z2=−21z⋅k≥1∑z2−k22z=−21z⋅k≥1∑dxdlog(z2−k2)=−21z⋅dxdlog(k≥1∏(z2−k2))数学分析告诉我们 sinx=x∏k≥1(z2−k2π2),这个乘积和上式就差了一个 π2,同时常识告诉我们 ζ(2N) 一定是某个有理数乘上 π2N 的形式,因此不妨把 G 的定义改为 ζ(2N)π−2N 的生成函数。经过类似的推导过程,我们得到
G(z)=n≥1∑π2nζ(2n)z2n=−21z⋅dzdlogzsinz=21(1−zcotz)如果你写不出 xcotx 的 Taylor 展开式 (实际上也不太可能写出来),可以用 cosx 和 x−1sinx 相除求出结果。一次求逆一次乘积,总复杂度 O(NlogN)。
进一步探索
做到上边那一步其实已经可以算是完了。但我们还想继续推点东西出来。
复变函数告诉我们 cotz=i⋅e2zi−1e2zi+1,因此
zcotz=zi⋅e2zi−1e2zi+1=zi+e2zi−12zi后面那一项看起来很眼熟,因为它就是 Bernoulli 数的 EGF。注意到 Bernoulli 数仅在 1 一个奇数的取值非零,因此有
ex−1x=n≥1∑n!Bnxn=B1x+k≥1∑(2k)!B2kx2k将 x=2zi 代入上式,得到
e2zi−12zi=−zi+k≥1∑(2k)!B2k(−4)kz2k一切都联系了起来。也就是说,我们最终的结论是
1−2G(z)=zcotz=k≥1∑(2k)!B2k(−4)kz2k对比两边 z2k 的系数,有
ζ(2k)=2(2k)!(−1)k+1B2k(2π)2k至此,我们也可以通过预处理 Bernoulli 数计算结果。需要的操作仅剩一次求逆,但时间复杂度仍然是 O(NlogN)。
后记
至于官方题解里里提到的
−k≥1∑(2k)!xk=(k≥0∑(2k+1)!xk)(k≥1∑π2kζ(2k)(1−22k1)(−x)k)这个式子,确实也可以在 O(NlogN) 时间内做出答案,也不知道朝鲜那群出题人是怎么找到这个式子的……