Description

商店里面有n张邮票,现在去买一张,然后老板会送若干张(至少一张)邮票。如果老板送的邮票的面值的最大公约数不是1,并且老板送的邮票和我们购买的邮票的面值最大公约数是1,那么就是一组好的邮票组合。问有多少种好的邮票组合。
样例解释:
· 买第1张,送第2张;
· 买第3张,送第2张;
· 买第2张,送第1张;
· 买第2张,送第3张;
· 买第2张,送第1和第3张;

Solution

看到gcd=1,差不多就要用到反演的知识,这题用了μ\mu函数,
考虑求出gcd为1的倍数的,再用mu来做,
也就是求出有多少种组合,使得送的邮票的gcd不为1,
先求出有多少种送的方案,使得送的的gcd不为1,再考虑买哪个,
求送的方案这个也用mu来做容斥,+2+3+5-6+7-10….
求完送的方案,那么就枚举一个邮票,看看送的方案有多少,
这个看起来要分解因数,但你打完后会发现,其实上面两个可以一起搞,只用枚举倍数即可,

最后再用mu做一遍即可

复杂度:O(107log(107))O(10^7\log(10^7))

Code

#include <cstdio>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define max(q,w) ((q)<(w)?(w):(q))
using namespace std;
typedef long long LL;
const int N=10000500,mo=1e9+7;
int read(int &n)
{char ch=' ';int q=0,w=1;for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());if(ch=='-')w=-1,ch=getchar();for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
int m,n;
int a[N];
LL ans,er[N];
int pr[N/3],mu[N],co[N];
bool prz[N];
int main()
{int q,mx=0;read(n);er[0]=1;fo(i,1,n)er[i]=er[i-1]*2%mo;fo(i,1,n)a[read(q)]++,mx=max(mx,q);LL T=0;mu[1]=1;fo(i,2,mx){if(!prz[i])pr[++pr[0]]=i,mu[i]=-1;int t=0;for(int j=i;j<=mx;j+=i)t+=a[j];co[i]=t;if(t&&mu[i]){T=(T-mu[i]*(er[t]-1LL)%mo)%mo;ans=(ans+mu[i]*er[t-1]*(LL)t)%mo;}fo(j,1,pr[0]){t=i*pr[j];if(t>mx)break;prz[t]=1;if(i%pr[j]==0)break;mu[t]=-mu[i];}}ans=(ans+T*(LL)n)%mo;fo(i,2,mx)if(co[i]&&mu[i])ans=(ans+mu[i]*(er[co[i]-1]-1LL)%mo*(LL)(co[i]))%mo;printf("%lld\n",(ans%mo+mo)%mo);return 0;
}

【51NOD 1585】买邮票送邮票相关推荐

  1. 51nod 1585 买邮票送邮票 容斥原理+线性筛

    题意 商店里面有n张邮票,现在去买一张,然后老板会送若干张(至少一张)邮票.如果老板送的邮票的面值的最大公约数不是1,并且老板送的邮票和我们购买的邮票的面值最大公约数是1,那么就是一组好的邮票组合.问 ...

  2. 【51Nod1585】买邮票送邮票

    商店里面有n张邮票,现在去买一张,然后老板会送若干张(至少一张)邮票.如果老板送的邮票的面值的最大公约数不是1,并且老板送的邮票和我们购买的邮票的面值最大公约数是1,那么就是一组好的邮票组合.问有多少 ...

  3. 银行卡大小的充电宝,买就送耳机!

    每个人的朋友圈和微博上 似乎都有那么几个活得让人羡慕的朋友 他们的生活 看起来不仅精致,还很丰富多彩 从早上第一刻就开始了 ↓ 出门旅游 新一天的穿搭 逆天朋友团 咖啡馆到书店 逼格十足的日料 夜景太 ...

  4. 买衣服送粉丝,人气美女出新招

    买衣服送粉丝,人气美女出新招 淘宝,对于大多数人来说,几年前还是一个新鲜事物,只有少数敢于吃"螃蟹"的人涉足其中.但如今,随着电子商务的发展,在社会经济.生活压力的增大.物价和房价 ...

  5. 谷歌又买算法送手机了,最新方法让背景虚化细节到头发丝,真有单反的感觉了...

    明敏 发自 凹非寺 量子位 | 公众号 QbitAI 当真是买算法送手机! 这不,谷歌又给"亲儿子"Pixel 6塞福利了,让手机抠图也能细节到头发丝. 看这效果,原本模糊的头发轮 ...

  6. SAP SD买十送一的业务处理与系统实现

    买十送一的业务处理与系统实现 在实际业务中我们总是会遇到买电冰箱送电饭锅的事情,对于企业也不例外.也会碰到买十个材料送一个材料的事情,当然这不是天上掉下馅饼,而是真切的业务.对于销售方来讲赠品在税务账 ...

  7. 卡写入速度_看清商家买相机送SD卡的套路,一文教你掌握存储卡选购秘诀

    学摄影,可能并不比学一门艺术或学科更简单,它可能更难. 我的工作是摄影教学,想在短时间内让学摄影的人顺利毕业,注定需要不厌其烦的整理.疏导琐碎的摄影知识,搭建知识网络,然后研发成课程.最终复盘再优化再 ...

  8. android camera 3a,买相机送手机 pixel 3a 上手体验

    买相机送手机 pixel 3a 上手体验 2019-05-29 08:29:42 23点赞 14收藏 20评论 创作立场声明:独立主观有点方 购买理由 有人说过,人生就是连续的选择题,人们总是在取与舍 ...

  9. 厉害了!春节不打烊年货30分钟即买即送 饿了么新上线650多家超市

    [TechWeb]1月27日,饿了么方面介绍,为了满足消费者的年货购买需求,饿了么app近期新增上线超650家大型连锁商超门店,春节期间饿了么超市不打烊,消费者可以在饿了么上享受30分钟即买即送的年货 ...

最新文章

  1. Fork and Join: Java Can Excel at Painless Parallel Programming Too!---转
  2. 如何在Angular.js选择框中使用默认选项
  3. 我在A4纸上看宫崎骏动画
  4. 简单试用了一下 dynamips 7200路由模拟器
  5. python reduce函数 day16
  6. 优秀程序员的 18 大法则【转载】
  7. embedv.php_PHP与视频播放插件功能实现,非常简单
  8. VC RichEdit插入表格(RTF形式)
  9. OpenShift 4 - 应急响应Demo应用(AMQ+Knative+Quay+BPM+BDM+SSO)
  10. 将Eclipse Android项目打包成APK文件
  11. Oracle WebLogic Server 12cR2 环境搭建集群部署
  12. steam加速_Apex英雄Steam版锁60帧 GoLink免费加速器助力畅快_综合资讯
  13. 输入需求自动生成代码,这个AI有点厉害,可以替代真人吗?
  14. 软件工程实践—软件评测
  15. 二、概率p值检验例题(R语言)
  16. 单点登录怎么整合项目_如何推销新项目:整合设计,创建登录页面并“吸引”用户...
  17. 解决 have unmet dependencies: youdao-dict :
  18. 微服务项目:尚融宝(38)(核心业务流程:申请借款额度(1))
  19. webrtc分辨率和比特率--问题集锦
  20. Rosalind第11题——ros_bio11_FIBD

热门文章

  1. python王者战斗_Python3 类与对象之王者荣耀对战小游戏
  2. Python之王者荣耀文字游戏,以及小知识回顾
  3. 爬取动态网站表格内容
  4. 解码者:数学探秘之旅——读书笔记(一)
  5. 【Rust日报】2022-10-09 出于什么原因,您应该选择 rust 进行后端开发而不是其他选项?...
  6. 未来生活里掌握计算机技术的重要性,浅谈计算机教育重要性的几点理解.doc
  7. cmake学习笔记 二
  8. 网站数据统计分析之二:前端日志采集是与非
  9. 图神经网络 推荐系统,基于神经网络的推荐
  10. java clob http传送_JAVA CLOB作为参数传给ORACLE后台