Codeforces 585E Present for Vitalik the Philatelist (莫比乌斯反演)
来源:互联网 发布:忘仙商人软件 编辑:程序博客网 时间:2024/06/05 03:18
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #include <set> #include <ctime> #include <cstdlib> using namespace std; #define inf 0x3f3f3f3f#define N 10000020#define M 1000020#define LL long long#define mod 1000000007#define ls (i << 1)#define rs (ls | 1)#define md (ll + rr >> 1)#define lson ll, md, ls#define rson md + 1, rr, rs#define B 350int p[N/10], cnt;short int mu[N];bool np[N];int p2[N];int n;int h[N];int g[N];int c[N];int a[N];void init() {mu[1] = 1;for(int i = 2; i < N; ++i) {if(!np[i]) {p[cnt++] = i;mu[i] = -1;}for(int j = 0; j < cnt && i * p[j] < N; ++j) {int t = i * p[j];np[t] = 1;if(i % p[j] == 0) {mu[t] = 0;break;}mu[t] = mu[i] * -1;}}p2[0] = 1;for(int i = 1; i < N; ++i) p2[i] = p2[i-1] * 2 % mod;h[1] = g[1] = p2[n] - 1;a[1] = n;for(int i = 2; i < N; ++i) {for(int j = i + i; j < N; j += i) {a[i] += a[j];}if(a[i] > 0) h[i] = g[i] = p2[a[i]] - 1;}for(int j = 2; j < N; ++j) {if(mu[j] == 0) continue;for(int d = j, i = 1; d < N; d += j, ++i) {h[i] += 1LL * mu[j] * g[d] % mod;if(h[i] >= mod) h[i] -= mod;if(h[i] < 0) h[i] += mod;}}for(int i = 1; i < N; ++i) {if(mu[i] == 0) continue;for(int j = i; j < N; j += i) {c[j] += 1LL * mu[i] * a[i] % mod;if(c[j] < 0) c[j] += mod;if(c[j] >= mod) c[j] -= mod;}}}int readint() {char c;while((c = getchar()) && !(c >= '0' && c <= '9'));int ret = c - 48;while((c = getchar()) && c >= '0' && c <= '9')ret = ret * 10 + c - 48;return ret;}int main() {scanf("%d", &n);for(int i = 1; i <= n; ++i) {int x;x = readint();a[x]++;}init();LL ans = 0;for(int i = 2; i < N; ++i) {ans += 1LL * c[i] * h[i];}ans %= mod;printf("%d\n", ans);return 0;}
0 1
- Codeforces 585E Present for Vitalik the Philatelist (莫比乌斯反演)
- 解题报告:Codeforces Round #325(Div. 1) E. Present for Vitalik the Philatelist (莫比乌斯反演)
- codeforces 585E. Present for Vitalik the Philatelist (容斥原理)
- CodeForces 585D Present for Vitalik the Philatelist(容斥原理+gcd)
- [Codeforces585E]Present for Vitalik the Philatelist(容斥原理+组合数学)
- Codeforces 235E Number Challenge (莫比乌斯反演)
- Codeforces 235 E Number Challenge(莫比乌斯反演)
- Codeforces 548E Mike and Foam (容斥+莫比乌斯反演)
- Codeforces 235E Number Challenge (神定理+莫比乌斯反演)
- codeforces 548 E. Mike and Foam (莫比乌斯反演)
- [Codeforces 809E] Surprise me! 莫比乌斯反演+虚树
- [Codeforces 235E/236B] Number Challenge 莫比乌斯反演
- 解题报告:Codeforces Round #146 (Div. 1) E. Number Challenge 莫比乌斯反演
- 解题报告: Codeforces Round #305 (Div. 2) E.Mike and Foam (莫比乌斯反演)
- Codeforces 645F Cowslip Collections (莫比乌斯反演)
- codeforces 645F (莫比乌斯反演)
- codeforces 864D 莫比乌斯反演
- 二项式反演,莫比乌斯反演。
- ural 1013. K-based Numbers. Version 3
- 细说dex2oat(1)
- C++类的特性相关题目
- ORACLE 交叉报表固定列实现方法
- hdu1015(dfs)
- Codeforces 585E Present for Vitalik the Philatelist (莫比乌斯反演)
- C#-Math基本方法
- 深拷贝和浅拷贝
- JAVA多线程之基础部分
- 专题一 Problem G
- 杭电题目分类
- mac的php7的安装记录
- 泛型(二)
- demo.xcodeproj Couldn't load demo.xcodeproj because it is already opened fro问题解决方法