给你长为 n 的正整数数组 ai ,让你从中找有多少对 (i,j) 满足 ai,aj 互质 n≤106
给你长为 n 的正整数数组 ai ,让你从中找有多少对 (i,j) 满足 ai,aj 互质
n≤106
不错的一道题
考虑枚举 j ,看前面有哪些数和他互质。这时候问题看起来很像一个非常经典的问题:问前 x 个数中有多少数是 2 的倍数或 3 的倍数。
一眼容斥,因此考虑我们用一个桶 numi 表示当前考虑的这些数中是 i 的倍数的数的个数。这时候发现答案就是 ∑i=1n∑d|aiμ(d)numd ,朴素计算复杂度 O(nd(n))
发现根据 μ(i) 的定义,我们不如手动把那些含有平方因子的数剔除掉。具体的,我们对于一个数 O(logA) 的分解质因数,然后对他的每个质因子枚举选不选即可。
复杂度 O(A+nlogA+n2ω(A)) ,这个复杂度是很难跑满的,足够通过
哦懂了懂了,等比数列求和。
(3) 到 (4) 是怎么转移的,大佬orz
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?