欧拉函数
phi[i] : 在1~i中有多少与i互素
莫比乌斯函数
mu[i] : ~~~~
方程变形的两个大致方法:1)调换连加顺序 2)提取相同项,利用前缀和
下面这个性质非常好用,谁用谁知道!
可以参考http://bigballon.github.io/2015/03/21/Moebius/
相关题目:
HUD 5321
http://acm.hdu.edu.cn/showproblem.php?pid=5321
题意:
对一个集合S={A1,A2,…,An},求
1.所有排列的所有不同区间的gcd之和
2.从n个数中选取k个数的所有方案的gcd之和
那么,
cnt[i]表示n个数中有多少个数是i的倍数
f[i]表示在一个排列中,连续k个数(1~n)它们的gcd为i的方案数
F[i]表示在一个排列中,选取k个数(1~n)它们的gcd为i的倍数的方案数
那么有,F[i]=sigma(C(cnt[i], k) * k! * (n - k )! * (n - k + 1))
同理,
g[i]表示选取k个数(1~n),它们的gcd为i的方案数
G[i]表示选取k个数(1~n),它们的gcd为i的倍数的方案数
那么有,G[i]=sigma(cnt[i] * 2^(cnt[i] - 1))
f和g都可以使用莫比乌斯反演通过F和G得到。