Description
给出 n 个正整数 a1,...,an ,从中选出 k 个数,若其 gcd 大于 1 ,则贡献为 k?gcd ,求贡献和
Input
第一行一整数 n ,之后输入 n 个正整数 ai(1≤n≤2?105,1≤ai≤106)
Output
输出贡献和,结果模 109+7
Sample Input
【Code|CodeForces 839 D.Winter is here(莫比乌斯反演+组合数学)】3
3 3 1
Sample Output
12
Solution
令 f(k,d) 表示选出 k 个数其 gcd 为 d 的方案数, F(k,d) 表示选出 k 个数其 gcd 被 d 整除的方案数,记 numd 表示 a1,a2,...,an 中可以被 d 整除的数的个数,则 F(k,d)=Cknumd
记 m=max(a1,a2,...,an) 为 d 可能取到的最大值
显然 F(k,d)=∑d|if(k,i) ,由莫比乌斯反演, f(k,d)=∑d|iμ(id)F(k,i)
枚举 k,d 得到贡献和 ans=∑k=1n∑d=2mk?f(k,d)=∑k=1n∑d=2m∑d|ik?μ(id)Cknumi=∑d=2m∑d|i∑k=1nk?Cknumi
而 ∑k=1nk?Cknumi=∑k=1numik?numi!k!?(numi?k)!=numi?∑k=1numiCk?1numi?1=numi?2numi?1:=g(i)
故 ans=∑i=2mg(i)(∑d|i,d>1μ(id))=∑i=2mg(i)(∑d|iμ(d)?μ(i))=∑i=2mg(i)?(φ(i)?μ(i))
Code
#include
#include
#include
#include
#include
#include
#include
#include
推荐阅读
- vs|Flutter Setup: Running pub upgrade.. Flutter Setup:Building flutter tool...
- 数论|Codeforces 235E Number Challenge 莫比乌斯反演+数论
- 牛客 K-ary Heap
- 刷题小结|51nod 1227 平均最小公倍数
- 筛法|[JZOJ5134][SDOI省队集训2017]三元组
- ACM|Codeforces 235E Number Challenge (神定理+莫比乌斯反演)
- 莫比乌斯反演|Codeforces 235 E Number Challenge(莫比乌斯反演)
- My|3309: DZY Loves Math 莫比乌斯反演
- 莫比乌斯反演|【51NOD 1227】平均最小公倍数