Small GCD

有两种做法

第一种做法:欧拉反演(其实我赛时的时候是想到了欧拉反演的,但是我不太清楚欧拉反演的使用trick)

欧拉反演的trick见这篇文章

欧拉反演直接用在gcd上还是挺多的(就像这篇文章中说的,gcd求和就可以用欧拉反演,实际上“龙哥的问题”就是典型的欧拉反演),可以想一下cnt数组怎么求

cnt数组其实是只用记一维的(因为记两维肯定爆炸了)。考虑对于d,如果d不是ai的约数,那么dicntdi1cnt肯定是一样的;如果dai的约数,那么dicnt就多了1

第二种做法:考虑贡献

见这篇文章

由于这道题目给的序列是离散的,我们没办法利用欧拉函数,所以考虑贡献的时候只能求出前面有多少个ai满足gcd是x,那么x肯定是ai的约数,但是这样的aiaj的gcd却不一定是x,但是我们有结论,公约数一定是gcd的约数,所以我们用容斥减去更大g就好了

posted @   最爱丁珰  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示