Educational Codeforces Round 20 F. Coprime Subsequences(莫比乌斯反演)
来源:互联网 发布:苹果5s蜂窝数据打不开 编辑:程序博客网 时间:2024/06/15 04:31
题目链接:
点击我打开题目链接
题意:
给你一个序列,问你有多少个子序列的
题解:
考虑一下容斥,枚举
因为这些的贡献统计到
然后快速统计含有某个数的作为因子的数有多少个。因为这时考虑的约数就在
代码:
#include <bits/stdc++.h>using namespace std;const int mod=1e9+7;const int maxn=123456;typedef long long ll;int mu[maxn],prime[maxn],cnt[maxn],Pow[maxn];int vis[maxn];int n;int total;void shai(){ mu[1] = 1; //固定的 for (int i = 2; i <= maxn; i++) { if (!vis[i]) //是素数 { prime[++total] = i; //记录,之后要用到 mu[i] = -1; //质因数分解个数为奇数 } for (int j = 1; j <= total; j++)//质数或者合数都进行的 { if (i * prime[j] > maxn) break; vis[i * prime[j]] = 1; if (i % prime[j] == 0) { mu[prime[j] * i] = 0; break; } mu[prime[j] * i] = - mu[i]; //关键,使得它只被最小的素数筛去。例如i等于6的时候。 //当时的素数只有2,3,5。6和2结合筛去了12,就break了 //18留下等9的时候,而9*2=18筛去 } }}int main(){ ll ans = 0 ; int x; cin>>n; for(int i=1;i<=n;i++) { cin>>x; for(int j=1;j*j<=x;j++) { if(x%j==0){ cnt[j]++; if(j!=x/j) { cnt[x/j]++; } } } } Pow[0]=1; for(int i=1;i<maxn;i++) { Pow[i]=(Pow[i-1]*2)%mod; } shai(); for(int i=1;i<maxn;i++) { ans = (ans + (Pow[cnt[i]]-1)*mu[i])%mod; } ans=(ans+mod)%mod; cout<<ans<<endl; return 0;}
阅读全文
1 0
- Educational Codeforces Round 20 F. Coprime Subsequences(莫比乌斯反演)
- Educational Codeforces Round 20 F. Coprime Subsequences(容斥)
- cf Educational Codeforces Round 20 F. Coprime Subsequences
- CF 803 F. Coprime Subsequences(数论题,莫比乌斯,容斥原理)
- Codeforces 645F Cowslip Collections (莫比乌斯反演)
- codeforces 645F (莫比乌斯反演)
- codeforces803F Coprime Subsequences -- 莫比乌斯函数+容斥
- [hdu 5072]Coprime 数论-莫比乌斯反演
- Codeforces-803F-Coprime Subsequences(筛)
- Codeforces 803F Coprime Subsequences DP+GCD
- HDU 5072 Coprime (莫比乌斯反演+容斥+同色三角形)
- codeforces 803F Coprime Subsequences (容斥原理)
- 解题报告:Codeforces Round #146 (Div. 1) E. Number Challenge 莫比乌斯反演
- 解题报告: Codeforces Round #305 (Div. 2) E.Mike and Foam (莫比乌斯反演)
- Code( BestCoder Round #39 ($) C) (莫比乌斯反演)
- Educational Codeforces Round 5 [补F]
- Educational Codeforces Round 23 A-F
- Educational Codeforces Round 32 F. Connecting Vertices
- Android 仿火萤视频桌面 神奇的LiveWallPaper
- 浅析Android情景模式流程
- HDU 5894 hannnnah_j’s Biological Test(组合数学 逆元)
- RecyclerView用法总结
- 凸包面积(0249)
- Educational Codeforces Round 20 F. Coprime Subsequences(莫比乌斯反演)
- Android WebView与JS页面相互调用(二)
- 面试(二) 数据库
- angularJS--多个控制器之间的数据共享
- mysql入门连接查询(九)
- map遍历时,删除元素
- iOS模拟器键盘弹出以及中文输入
- Android内存泄漏
- 禁用IE缓存