Counting Rhyme

这道题目就是因为对数论容斥不熟悉导致的。。。之前也做到过

看这篇题解

首先这篇题解用到了一个很大的纲领:公约数是最大公约数的约数

然后看下gk怎么求:由于gk表示的是k|gcd(ai,aj)的对数,相当于kai,aj的公约数,所以我们把数组中k的倍数全部标出来,统计总共的个数,然后从这些里面随便选两个(组合数)就好了

像“Small GCD”这道题目一样,离散的结构可以考虑数论容斥呀。尽管这道题目全程没有出现gcd,但是公约数的话也可以往这方面想

update 2024.8.3

想到一种新做法,也是用了数论容斥

考虑计算不符合题目条件的对数,枚举aj

可以用数论容斥来唯一确定一对数。设gcd(ai,aj)=d,则daj的约数,用数论容斥可以求出来有多少对;如果数列中存在ak|d,那么这些对显然都不行,反之都行,于是可以计算

所以数论容斥的作用就是用来唯一确定一对数的,以后这种计算点对的可以想数论容斥

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