Luogu P5435 基于值域预处理的快速 GCD
突然想起来曾经偶然在陈指导的博客看到过这个做的方法,其实理解了之后还是比较简单的,以下设数的值域为
首先我们定义对于一个数的一种分解方式为三元组,满足,并且若为合数则
证明的话也很简单,考虑若,则,考虑找到的一种合法分解满足那么必然可以把三元组调整为
有了这个性质我们就很好办了,考虑询问的话我们可以分别考虑的分解和的贡献
和的贡献就是将答案乘上,然后将除以来消去这个因子的贡献,再对做同样的事即可
由于一般情况下,因此我们可以记录下范围内的,这样就可以处理了,当然质数的情况可以简单讨论掉
现在就要考虑怎么求所有数的分解了,其实很简单,只要在欧拉筛的时候通过的最小质因子
设的分解为,那么的合法分解为的不降排序,考虑证明:
- 当为质数是分解显然成立
- 当时,将代入有
- 当时,分情况考虑:
- 若,显然
- 若,由于不是质数,那么的最小质因子就是的第二小质因子,一定。而都为的非因子,故有,矛盾。故不存在这种情况
因此代码就很简单了
__EOF__

本文作者:hl666
本文链接:https://www.cnblogs.com/cjjsb/p/16852535.html
关于博主:复活的ACM新生,目前爱好仅剩Gal/HBR/雀魂/单机/OSU
版权声明:转载请注明出处
声援博主:欢迎加QQ:2649020702来DD我
本文链接:https://www.cnblogs.com/cjjsb/p/16852535.html
关于博主:复活的ACM新生,目前爱好仅剩Gal/HBR/雀魂/单机/OSU
版权声明:转载请注明出处
声援博主:欢迎加QQ:2649020702来DD我
辣鸡老年选手AFO在即
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
2020-11-02 AtCoder Grand Contest 019
2020-11-02 Luogu P1654 OSU!