CF1884D Counting Rhyme 题解
法1:
-
我们之前肯定看过这样一道非常经典的题:
-
求
中有多少对 ,满足 -
这题是莫反板子题,但显然可以不用莫反做。先不说这题怎么做,我们发现这道题和 CF1884D 的不同之处在于这题
可以为一些特殊的值 -
我们先考虑原题
怎么做,我们可以枚举 ,记录 表示 中是否存在 的因子,不存在为 ,存在为 。 -
则答案为:
-
-
然后考虑怎么优化成
,发现 ,因此要用到一个非常经典的思路:改变枚举顺序 -
我们改为枚举
,则答案变为: -
-
其中
表示 的数对个数。然后求 的过程就变成了上面那个问题 -
我们考虑数论容斥:设
表示 的个数,然后再容斥即可 -
复杂度
法2:
-
我们之前肯定看过这样一道非常经典的题:
-
求 a_i 中有多少对 (i,j),满足 \gcd(a_i,a_j)=1
n \leq 10^6
-
这题是莫反板子题,因此这题我们也考虑暴力莫反
-
现在是推式子时间!
-
记
为 的桶 -
-
然后转为枚举实际的值,而不是编号
-
-
此时前面的平方可以
处理,去除这一项后剩余的是一个狄利克雷卷积的形式,可以做到 ,故最终复杂度 -
注意:这么算的是没有顺序的,但因为
不可能成为答案,要注意答案除以
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?