复习了一下
感觉做的题都是第二种类型的mobius反演
1.YY的gcd
有好几题都是这个扩展出去的
什么区间-区间就是容斥一下
还有不能重复的 就减去$f(b,b)/2$就可以了
2.[SDOI2015]约数个数和
这题用到一个比较技巧的东西,
$f(x)$代表x的约数个数
$f(nm)= sum_{i=1}^{n} sum_{j=1}^{m} i|n,j|m,gcd(i,j)==1$
推式子反正网上都有。。打起来太麻烦了。。
基本套路就是搞出gcd(i,j)==1这个单独在一起(就是不能和其他变量发生乘法除法)
然后反演成什么n/x m/x之类的形式
最后除法分块
说个东西 /表示向下取整 表示正常除法 a/(b*c) (a/b)/c
考虑怎么去证明它
首先a/(b*c)=(a)/c a>=a/b
所以我们要相差最多 应该要构造a=k*b*c-1
这样第一个式子为k-1,而第二个式子((k*b*c-1)/b)/c=k-1
命题得证
3.洛谷P1829 [国家集训队]Crash的数字表格
这题前面还是比较套路
https://www.cnblogs.com/ljh2000-jump/p/6358095.html
到最后一步需要求$sum{mu(t)*t} t|n$ 这个可以用线性筛来求
至于这个为什么是积性函数
1.两个积性函数相乘还是积性函数 所以
2.两个积性函数的卷积还是积性函数
卷积的定义是$h(x)=f(t)*g(x/t) t|x$
https://www.cnblogs.com/Wuweizheng/p/8640319.html 这里讲了几个经典的
其他的比较简单
相对比较难的是线性筛约数和
直接复制一段过来。。
1、对n质因数分解,n=p1^k1 * p2^k2 * p3^k3 ……
则n的约数个数为(k1+1)*(k2+1)*(k3+1)……
2、线性筛素数时,用i和素数pj来筛掉 i*pj,
其中pj一定是i*pj的最小素因子
如果i是pj的倍数,pj也是i的最小素因子
设t[i] 表示i的约数个数,e[i] 表示i的最小素因子的个数
A、如果i是质数,t[i]=2,e[i]=1
B、如果i不是质数,枚举已有的质数pj i*pj的最小素因子是pj
1、如果i是pj的倍数那么e[i]即为i中包含的pj的个数,所以i*pj中包含的pj的个数为e[i]+1
所以e[i*pj]=e[i]+1,t[i*pj]=t[i]/(e[i]+1)*(e[i]+2)
2、如果i不是pj的倍数,e[i*pj]=1,t[i*pj]=t[i]*t[pj](积性函数的性质)=t[i]*2(素数的约数个数=2)
from:https://www.cnblogs.com/TheRoadToTheGold/p/8228969.html#_label1