正题

题目链接:https://www.luogu.com.cn/problem/CF585E


题目大意

给出一个大小为nnn的可重集TTT,求有多少个它的非空子集SSS和元素xxx满足
x∉S,gcd{S}>1,gcd(S,x)=1x\notin S,gcd\{S\}>1,gcd(S,x)=1x∈/​S,gcd{S}>1,gcd(S,x)=1

1≤n≤5×1051\leq n\leq 5\times 10^51≤n≤5×105,值域范围是[2,107][2,10^7][2,107]


解题思路

x∉Sx\notin Sx∈/​S这个条件是没有用的,可以去掉

然后设fif_ifi​表示与iii互质的数的个数,sis_isi​表示gcdgcdgcd为iii的集合个数,那么答案就是∑fisi\sum f_is_i∑fi​si​

然后设cic_ici​表示iii的个数
fi=∑d∣inμ(d)∑d∣jcjf_i=\sum_{d|i}^n\mu(d)\sum_{d|j}c_jfi​=d∣i∑n​μ(d)d∣j∑​cj​
然后可以处理出一个gd=∑d∣jcjg_d=\sum_{d|j}c_jgd​=∑d∣j​cj​就可以了。

然后考虑sis_isi​怎么处理
si=2ci−1−∑i∣d(2cd−1)s_i=2^{c_i}-1-\sum_{i|d}(2^{c_d}-1)si​=2ci​−1−i∣d∑​(2cd​−1)
就好了。

然后这些都可以用狄利克雷前缀/后缀和O(nlog⁡log⁡n)O(n\log \log n)O(nloglogn)求


code

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e7+1,P=1e9+7;
int n,cnt,pri[N],mu[N],f[N],s[N],pw[N],ans;
bool v[N];
int main()
{mu[1]=1;for(int i=2;i<N;i++){if(!v[i])pri[++cnt]=i,mu[i]=-1;for(int j=1;j<=cnt&&i*pri[j]<N;j++){v[i*pri[j]]=1;if(i%pri[j]==0)break;mu[i*pri[j]]=-mu[i];}}scanf("%d",&n);for(int i=1;i<=n;i++){int x;scanf("%d",&x);f[x]++;;}pw[0]=1;for(int i=1;i<N;i++)pw[i]=pw[i-1]*2ll%P;for(int j=1;j<=cnt;j++)for(int i=N/pri[j];i>=1;i--)f[i]+=f[i*pri[j]];for(int i=1;i<N;i++)s[i]=pw[f[i]]-1;for(int i=1;i<N;i++)f[i]=f[i]*mu[i];for(int j=cnt;j>=1;j--)for(int i=1;i*pri[j]<N;i++)f[i*pri[j]]+=f[i];for(int j=cnt;j>=1;j--)for(int i=1;i*pri[j]<N;i++)(s[i]-=s[i*pri[j]])%=P;for(int i=2;i<N;i++)(ans+=1ll*f[i]*s[i]%P)%=P;printf("%d\n",(ans+P)%P);return 0;
}

CF585E-Present for Vitalik the Philatelist【莫比乌斯反演,狄利克雷前缀和】相关推荐

  1. 莫比乌斯反演新手入门及练习题

    参考了以下大佬写出来的详细博客. 莫比乌斯反演入门讲解_tomandjake_的博客-CSDN博客_莫比乌斯反演 狄利克雷卷积与莫比乌斯函数_RBS的专栏-CSDN博客 在自己学习莫比乌斯反演时,自己 ...

  2. 【Project Euler】530 GCD of Divisors 莫比乌斯反演

    [题目]GCD of Divisors [题意]给定f(n)=Σd|n gcd(d,n/d)的前缀和F(n),n=10^15. [算法]莫比乌斯反演 [题解]参考:任之洲数论函数.pdf 这个范围显然 ...

  3. 狄利克雷卷积莫比乌斯反演证明

    狄利克雷卷积简介 卷积这名字听起来挺学究的,今天学了之后发现其实挺朴实hhh. 卷积: "(n)"表示到n的一个范围. 设\(f,g\)是两个数论函数(也就是说,以自然数集为定义域 ...

  4. 2021牛客暑期多校训练营(二) J. Product of GCDs 不动脑子的莫比乌斯反演做法(

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://ac.nowcoder.com/acm/contest/11253/J ...

  5. P4619 [SDOI2018]旧试题(莫比乌斯反演,建图优化三重枚举,三元环计数,神仙好题,超级清晰易懂)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P4619 [SDOI2018]旧试题(莫比乌斯反演,三元环计数) Problem 计算: ∑i=1A ...

  6. P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值) Problem Sol ...

  7. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

  8. (每日一题)P3312 [SDOI2014]数表(经典莫比乌斯反演 + 树状数组维护离线询问)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.11 莫反 P3312 [SDOI2 ...

  9. SDOI2015 约数个数和(莫比乌斯反演经典、双上限整除分块)超详细笔记

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 AcWing 1358. 约数个数和(莫比乌斯反演经典.双上限整除分块) #include <c ...

最新文章

  1. Oracle:彻底结束会话 ,彻底解锁
  2. 为什么特斯拉不使用激光雷达
  3. 【BZOJ3555】[Ctsc2014]企鹅QQ hash
  4. 论文翻译_做论文翻译需要知道哪些翻译技巧?知行翻译:这3个技巧
  5. 计算机硬件与游戏发展史,电脑硬件的发展历程中 什么是电竞SSD?
  6. 先序序列为a、b、c、d的不同二叉树的个数是多少(卡特兰数)
  7. eclipse查看git地址_Git大文件管理:函数计算和OSS支持的Git LFS服务器
  8. linux gitlab 9 邮件不发送,gitlab无法发送邮件
  9. Python中下划线---完全解读
  10. ops中set_sysclk set_clkdiv set_pll详解
  11. websphere、weblogic上JConsole的配置
  12. 汇编语言语句及其格式
  13. 项目实用-不登录就无法访问主页
  14. MySQL可视化工具之SQLyog小海豚
  15. allegro 丝印 对齐_如何对齐丝印 - Cadence allegro PCB 教程
  16. 【解决】Git:hint:Pulling without specifying how to reconclie divergent branches is...
  17. Java实现日历小程序【代码】
  18. Matter(CHIP) 目录和平台相关的文件
  19. 医院选址c语言课程设计,通信学院2012届本科毕业设计选题结果(学生)2.xls
  20. 集体名词做主语时下谓语的单复数选择

热门文章

  1. mysql数据恢复时显示多线程恢复_MySQL多线程备份恢复工具mydumper,myloder
  2. java中JOptionPane类_java:JOptionPane类消息框总结
  3. 如何给柱状图柱子添加阴影_【LeetCode日记】84. 柱状图中最大的矩形
  4. linux下安装服务,linux下的软件服务安装管理
  5. java hdms_字段为clob类型,无法插入数据
  6. java一个界面用另一个界面的值_如何将参数/值从一个弹出窗口传递到Angular2中的另一个弹出窗口...
  7. git revert 后再次merge_git如何回滚错误合并的分支
  8. session.setAttribute和request.setAttribute的区别
  9. android 背景图片居中显示文字,Android ImageSpan 给文字设置圆角背景 并且文字居中,背景居中。...
  10. 计算机操作系统第四章作业