又在抄 oi-wiki...
求
ϕ(n)=n∑iφ(i)
利用 id=φ∗1:
12n(n+1)=n∑kk=n∑k∑d|kφ(kd)=n∑d∑1≤k≤n,d|kφ(kd)=n∑d⌊nd⌋∑kφ(k)=n∑dϕ(⌊nd⌋)
注意到当 d=1 的时候就是我们想要的 ϕ(n)
即:ϕ(n)=12n(n+1)−∑d≥2ϕ(⌊nd⌋)
记忆化搜索即可,可证算法复杂度为 O(n2/3).
一般化
欲求 f 的前缀和 F,构造出 F(n) 关于 F(⌊nd⌋) 的递推式。
∑i∑d|ig(d)f(id)=∑ig(i)F(⌊ni⌋)⟺∑i(f∗g)(i)=g(1)F(n)+∑i>1g(i)F(⌊ni⌋)
若能快速求得 f∗g 的前缀和以及 g,则可以整除分块来求 F(n).
试试看!
求 ∑ni=1μ(i) 的值,其中 n≤231−1.
利用 μ∗1=ϵ 即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?