Solution
我们直接考虑一个数成为 LocalMaxima 的期望,我们发现满足要求只能是前面的数都比他小,假设这个数是x,前面的数的取值就只能是 1∼x−1,答案就是:
∑x−1i=0A(x−1,i)×(n−i−1)!n!
∑x−1i=0(x−1)!/(x−1−i)!×(n−i−1)!n!
(x−1)!×∑x−1i=0(n−i−1)!/(x−1−i)!n!
(x−1)!×∑x−1i=0A(n−i−1,n−x)n!
那么我们现在要求的就是 ∑x−1i=0A(n−i−1,n−x)。
我们给他除一个 (n−x)!,就转化成了求 ∑x−1i=0C(n−i−1,n−x),答案是 C(n,n−x+1)
把 (x−1)! 放回来,那么有:
n!/(n−x+1)!×(n−x)!n!
∏ni=n−x+2i×∏n−xj=1jn!
1n−x+1
当然 n≥1000000 的部分要用调和级数近似公式。
Code
for i:=1 to n do x:=x+1/(n-i+1);
writeln(ln(n+1)+0.57721566490153286060651209:0:8);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下