link。

设 \(\displaystyle f(x) = \# S', s.t. S' \subseteq S, S' \neq \varnothing, \gcd(S') = x\),\(g(x) = \# t, s.t. \gcd(t, x) = 1\),则答案为 \(\sum f_i \times g_i\)。

  • \(f\):这个的求解是老套路了,设 \(\displaystyle F(x) = \# S', s.t. S' \subseteq S, S' \neq \varnothing, x \mid S'\),则有 \(\displaystyle F(x) = 2^{\sum_{x \mid t} \textit{cnt}_t}-1\),\(cnt\) 是桶,\(\displaystyle f(x) = \sum_{x \mid d} \mu(\frac{d}{x}) \times F(d)\),可以调和级数也可以逆 dirichlet 前后缀和(不可以)。
  • \(g\):写出 \(\displaystyle g_T = \sum_i [(T, i) = 1] \textit{cnt}_i = \sum_{d \mid T} \mu(d) \sum_{d \mid i} cnt_i = \sum_{d \mid T} h_d\),其中 \(h_d = \mu(d) \times w_d\),其中 \(\displaystyle w_T = \sum_{T \mid i} \textit{cnt}_i\)。都是 dirichlet 前后缀和的形式。
using modint = modint1000000007;
bitset<10000100> tag;
int n, up, tot, prm[10000100], mu[10000100], w[10000100];
modint f[10000100], F[10000100], pw[10000100];
void sieve(int maxn) {
mu[1] = 1;
for (int i=2; i<=maxn; ++i) {
if (!tag[i]) {
prm[++tot] = i;
mu[i] = -1;
}
for (int j=1; j<=tot && i<=maxn/prm[j]; ++j) {
tag.set(i*prm[j]);
if (i%prm[j] == 0) {
break;
}
mu[i*prm[j]] = -mu[i];
}
}
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i=1,x; i<=n; ++i) {
cin >> x, w[x]++;
cmax(up, x);
}
sieve(up);
pw[0] = 1;
for (int i=1; i<=up; ++i) {
pw[i] = pw[i-1]*2;
}
for (int i=1; i<=tot; ++i) {
for (int j=up/prm[i]; j>=1; --j) {
w[j] += w[j*prm[i]];
}
}
for (int i=1; i<=up; ++i) {
F[i] = pw[w[i]]-1;
}
for (int i=1; i<=up; ++i) {
for (int d=i; d<=up; d+=i) {
f[i] += mu[d/i]*F[d];
}
}
#define g F
for (int i=1; i<=up; ++i) {
g[i] = mu[i]*w[i];
}
for (int i=1; i<=tot; ++i) {
for (int j=1; j<=up/prm[i]; ++j) {
g[j*prm[i]] += g[j];
}
}
modint ans = 0;
for (int i=2; i<=up; ++i) {
ans += f[i]*g[i];
}
cout << ans.val() << "\n";
}

「codeforces - 585E」Present for Vitalik the Philatelist的更多相关文章

  1. 「CF585E」 Present for Vitalik the Philatelist

    「CF585E」 Present for Vitalik the Philatelist 传送门 我们可以考虑枚举 \(S'=S\cup\{x\}\),那么显然有 \(\gcd\{S'\}=1\). ...

  2. 【CF 585E】 E. Present for Vitalik the Philatelist

    E. Present for Vitalik the Philatelist time limit per test 5 seconds memory limit per test 256 megab ...

  3. 【CodeForces】585 E. Present for Vitalik the Philatelist

    [题目]E. Present for Vitalik the Philatelist [题意]给定n个数字,定义一种合法方案为选择一个数字Aa,选择另外一些数字Abi,令g=gcd(Ab1...Abx ...

  4. CF585E. Present for Vitalik the Philatelist [容斥原理 !]

    CF585E. Present for Vitalik the Philatelist 题意:\(n \le 5*10^5\) 数列 \(2 \le a_i \le 10^7\),对于每个数\(a\) ...

  5. CF 585 E Present for Vitalik the Philatelist

    CF 585 E Present for Vitalik the Philatelist 我们假设 $ f(x) $ 表示与 $ x $ 互质的数的个数,$ s(x) $ 为 gcd 为 $ x $ ...

  6. Codeforces 585E - Present for Vitalik the Philatelist(简单莫反+狄利克雷前缀和)

    Codeforces 题目传送门 & 洛谷题目传送门 一道不算太难的 D1E 罢--虽然我不会做/kk u1s1 似乎这场 Div1 挺水的?F 就是个 AC 自动机板子还被评到了 3k2-- ...

  7. Codeforces 585E. Present for Vitalik the Philatelist(容斥)

    好题!学习了好多 写法①: 先求出gcd不为1的集合的数量,显然我们可以从大到小枚举计算每种gcd的方案(其实也是容斥),或者可以直接枚举gcd然后容斥(比如最大值是6就用2^cnt[2]-1+3^c ...

  8. 「CodeForces 581D」Three Logos

    BUPT 2017 Summer Training (for 16) #3A 题意 给你三个矩形,需要不重叠不留空地组成一个正方形.不存在输出-1,否则输出边长和这个正方形(A,B,C表示三个不同矩形 ...

  9. 「CodeForces - 50C 」Happy Farm 5 (几何)

    BUPT 2017 summer training (16) #2B 题意 有一些二维直角坐标系上的整数坐标的点,找出严格包含这些点的只能八个方向走出来步数最少的路径,输出最少步数. 题解 这题要求严 ...

  10. 「CodeForces - 598B」Queries on a String

    BUPT 2017 summer training (for 16) #1I 题意 字符串s(1 ≤ |s| ≤ 10 000),有m(1 ≤ m ≤ 300)次操作,每次给l,r,k,代表将r位置插 ...

随机推荐

  1. C2简介

    C2简介 学习命令与控制的基本知识,帮助您成为更好的红队队员并简化您的下一次红队评估! thm:https://tryhackme.com/room/introtoc2 介绍 命令与控制 ( C2 ) ...

  2. [ARM汇编]计算机原理与数制基础—1.1.1计算机的基本原理

    计算机是一种能够根据指令集自动.高速处理数据的现代化设备.它的基本原理可以总结为:输入.存储.处理和输出数据.接下来,我们将详细介绍这些基本原理. 输入 计算机通过输入设备(如键盘.鼠标等)接收外部数 ...

  3. 无限分解流----Fork/Join框架

    Fork译为拆分,Join译为合并Fork/Join框架的思路是把一个非常巨大的任务,拆分成若然的小任务,再由小任务继续拆解.直至达到一个相对合理的任务粒度.然后执行获得结果,然后将这些小任务的结果汇 ...

  4. 在 Istio 服务网格内连接外部 MySQL 数据库

    为了方便理解,以 Istio 官方提供的 Bookinfo 应用示例为例,利用 ratings 服务外部 MySQL 数据库. Bookinfo应用的架构图如下: 其中,包含四个单独的微服务: pro ...

  5. 全球开源 AI 游戏开发挑战赛,只等你来!

    我们在之前的文章中 预告过 (*划重点,IP 属地法国):7 月初,我们将举办一次与 AI 游戏相关的黑客松活动,这是有史以来的首次开源游戏开发挑战赛,借助人工智能工具释放你的创造力,一起打破游戏开发 ...

  6. 前端Vue自定义导航栏菜单 定制左侧导航菜单按钮 中部logo图标 右侧导航菜单按钮

    前端Vue自定义导航栏菜单 定制左侧导航菜单按钮 中部logo图标 右侧导航菜单按钮, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin? ...

  7. LEA: Improving Sentence Similarity Robustness to Typos Using Lexical Attention Bias 论文阅读

    LEA: Improving Sentence Similarity Robustness to Typos Using Lexical Attention Bias 论文阅读 KDD 2023 原文 ...

  8. React组件设计之性能优化篇

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:空山 前言 由于笔者最近在开发中遇到了一个重复渲染导致子组 ...

  9. linux 脚本:iptables-nat.sh

    #!/bin/bash # 2022.2.28 by dewan # DNAT configuration. iptables -t nat -F PUB_IFACE="enp125s0f0 ...

  10. 如何使用iptables防火墙模拟远程服务超时

    前言 超时,应该是程序员很不爱处理的一种状态.当我们调用某服务.某个中间件.db时,希望对方能快速回复,正确就正常,错误就错误,而不是一直不回复.目前在后端领域来说,如java领域,调用服务时以同步阻 ...