首页 > 代码库 > Codeforces 803F(容斥原理)
Codeforces 803F(容斥原理)
题意:
给n个正整数,求有多少个GCD为1的子序列。答案对1e9+7取模。
1<=n<=1e5,数字ai满足1<=ai<=1e5
分析:
设f(x)表示以x为公约数的子序列个数
那么ans=f(1)- Σf(pi) + Σf(pi*pj) - Σf(pi*pj*pk) ........
注意到对于一个f(x),它对结果的贡献是:
若x为合数,那么前面系数为0
若x由奇数个素数组成,那么系数是-1
若x由偶数个素数组成,那么系数是1
这明显就是莫比乌斯函数……直接一个线性筛出来
那么问题就是f(x)怎么求,这显然就是f(x)=2^num(x) - 1 (num(x)表示原先序列里有多少个数是x的倍数)
Codeforces 803F(容斥原理)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。