天码

经典数论容斥,只不过这里从二维的变成了四维的

\(cnt[d]\)表示给出的序列中约数有\(d\)的数的个数

这里用到一个引理:一堆数的最大公约数一定是他们公约数的倍数

这个证明其实非常简单,从分解质因数的角度考虑,遍历一遍数列并且对质因数的个数取min,那么约数的集合肯定就是在这里面选,个数不能超过min的,肯定能整除呀

所以上面枚举的减掉的东西只用枚举\(kd\)

再考虑一下,这些四元组里面,如果gcd不为\(d\),根据上面的引理,由于他们有公共约数\(d\),所以gcd一定也是\(d\)的倍数,所以不重不漏了

听说这道题目还可以用莫比乌斯函数做,看一下是否更加自然

posted @ 2024-02-18 11:43  最爱丁珰  阅读(7)  评论(0编辑  收藏  举报