有
gcd(xa−1,xb−1)=xgcd(a,b)−1
和
lcm(S)=T⊂S∏gcd(T)(−1)∣T∣−1
于是现在就是要求固定长度和 gcd 下的子集个数。
一种是发现状态数很少,直接开 map
推过去。
另一种是直接莫反。
109 下的因子个数最多 1344 个。
ans=d∏(xd−1)f(d)f(n)=n∣d∑μ(nd)g(c(n))g(n)=i=1∑n(−1)i−1(ni)
c(n) 是倍数出现次数。
发现 g(n)=1。
但是这样中间枚举倍数时复杂度会转到值域上。
考虑另一种莫反,记 F(x) 表示 gcd 至少为 x 时的转移系数之和。
F(x)=∑(−1)∣S∣+1[x∣k,∀k∈S]
发现 F 就是 g,所以 F(x)=1。
我们现在要容斥出 gcd 为 x 的转移系数,那么用 F(x) 减去会出现的 x∣y 且 x=y 的 F(y) 即可。
做完了。
深层次地,μ 应该是指的对于值域上的数的容斥,对于值域很大但可能出现的数很少的情况下,可以考虑第二种莫反。