可达模拟赛9F

给你长为 n 的正整数数组 ai ,让你从中找有多少对 (i,j) 满足 ai,aj 互质

n106

不错的一道题

考虑枚举 j ,看前面有哪些数和他互质。这时候问题看起来很像一个非常经典的问题:问前 x 个数中有多少数是 2 的倍数或 3 的倍数。

一眼容斥,因此考虑我们用一个桶 numi 表示当前考虑的这些数中是 i 的倍数的数的个数。这时候发现答案就是 i=1nd|aiμ(d)numd ,朴素计算复杂度 O(nd(n))

image

发现根据 μ(i) 的定义,我们不如手动把那些含有平方因子的数剔除掉。具体的,我们对于一个数 O(logA) 的分解质因数,然后对他的每个质因子枚举选不选即可。

复杂度 O(A+nlogA+n2ω(A)) ,这个复杂度是很难跑满的,足够通过

posted @   FOX_konata  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示