Codeforces803F Coprime Subsequences
来源:互联网 发布:windows exec函数 编辑:程序博客网 时间:2024/06/05 05:28
链接
http://codeforces.com/problemset/problem/803/F
题目大意
给你一个序列,问你有多少个子序列的
题解
这题直接入手的话应该就想到枚举
你发现这个东西其实就是莫比乌斯函数,直接线性筛即可。
问题是怎么快速统计含有某个数作为因子的数有多少个。
显然可能计入答案的就是
考虑一个数的约数的级别是
代码
//容斥 #include <cstdio>#define maxn 100005#define ll long long#define mod 1000000007llusing namespace std;int mu[maxn], N, prime[maxn], mark[maxn], cnt[maxn], mi[maxn];void shai(){ int i, j; mu[1]=1; for(i=2;i<maxn;i++) { if(!mark[i]){prime[++*prime]=i;mu[i]=-1;} for(j=1;i*prime[j]<maxn;j++) { mark[i*prime[j]]=1; if(i%prime[j]==0)break; mu[i*prime[j]]=-mu[i]; } }}void init(){ int i, j, x; scanf("%d",&N); for(i=1;i<=N;i++) { scanf("%d",&x); for(j=1;j*j<=x;j++)if(x%j==0)cnt[j]++, cnt[x/j]+=j!=x/j; } mi[0]=1; for(i=1;i<maxn;i++)mi[i]=(mi[i-1]<<1)%mod;}int main(){ ll ans=0; init(); shai(); for(int i=1;i<maxn;i++)ans=(ans+(mi[cnt[i]]-1)*mu[i])%mod; printf("%I64d",(ans+mod)%mod); return 0;}
0 0
- Codeforces803F Coprime Subsequences
- codeforces803F Coprime Subsequences -- 莫比乌斯函数+容斥
- Codeforces-803F-Coprime Subsequences(筛)
- Codeforces 803F Coprime Subsequences DP+GCD
- codeforces 803F Coprime Subsequences (容斥原理)
- Educational Codeforces Round 20 F. Coprime Subsequences(容斥)
- cf Educational Codeforces Round 20 F. Coprime Subsequences
- CF 803 F Coprime Subsequences (容斥原理)
- Coprime
- Coprime
- Educational Codeforces Round 20 F. Coprime Subsequences(莫比乌斯反演)
- CF 803 F. Coprime Subsequences(数论题,莫比乌斯,容斥原理)
- 4314. Coprime
- 4314. Coprime
- HDU5072 Coprime
- hdu5072 Coprime
- Coprime Sequence
- Coprime Sequence
- Android adb命令使用总结
- Pascal VOC 数据集介绍
- 关闭spring boot的banner
- hpu 1267 Cafeteria (01背包)
- B
- Codeforces803F Coprime Subsequences
- LeetCode-520. Detect Capital (JAVA)大写字母的合法性
- 循环队列的实现
- android 四大组件之Activity
- Dom3
- 业精于勤荒于嬉
- Shell编程(1)
- 前端经典面试题: 从输入URL到页面加载发生了什么?
- Excel 报表导入导出