洛谷P2257 YY的GCD(莫比乌斯反演)
传送门
原来……莫比乌斯反演是这么用的啊……(虽然仍然不是很明白)
首先,题目所求如下$$\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=prim]$$
我们设$f(d)$表示$gcd(i,j)=d$的$(i,j)$的对数,$g(d)$表示存在公因数为$d$的$(i,j)$的对数
那么就有$$f(d)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=d]$$
$$g(d)=\sum_{d|k}f(k)=\lfloor\frac{N}{d}\rfloor\lfloor\frac{M}{d}\rfloor$$
那么根据莫比乌斯反演定理,则有$$f(n)=\sum_{n\mid d}\mu(\frac{d}{n})g(d)$$
然后就可以化简了$$ans=\sum_{p\in prim}\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=p]$$
将$f(p)$代入,得$$ans=\sum_{p\in prim}f(p)$$
$$ans=\sum_{p\in prim}\sum_{p\mid d}\mu(\frac{d}{p})g(d)$$
我们考虑换一个枚举项,不枚举$p$,枚举$\frac{d}{p}$
$$ans=\sum_{p\in prim}\sum_{d=1}^{min(\lfloor\frac{n}{p}\rfloor,\lfloor\frac{m}{p}\rfloor)}\mu(d)g(dp)\\=\sum_{p\in prim}\sum_{d=1}^{min(\lfloor\frac{n}{p}\rfloor,\lfloor\frac{m}{p}\rfloor)}\mu(d)\lfloor\frac{n}{dp}\rfloor\lfloor\frac{m}{dp}\rfloor$$
然后我们把$dp$给换成$T$
$$ans=\sum_{T=1}^{min(n,m)}\sum_{t|T,t\in prim}\mu(\lfloor\frac{T}{t}\rfloor)\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor$$
$$ans=\sum_{T=1}^{min(n,m)}\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor(\sum_{t|T,t\in prim}\mu(\lfloor\frac{T}{t}\rfloor))$$
然后对$(\sum_{t\mid T,t\in prim}\mu(\frac{T}{t}))$求一个前缀和,就好了
这数学公式真的是打的我心力憔悴……
1 //minamoto 2 #include<cstdio> 3 #define ll long long 4 //#define min(a,b) ((a)<(b)?(a):(b)) 5 inline int min(int a,int b){return a<b?a:b;} 6 const int N=1e7+5; 7 int vis[N],mu[N],p[N],g[N],m;ll sum[N],ans; 8 void init(int n){ 9 mu[1]=1; 10 for(int i=2;i<=n;++i){ 11 if(!vis[i]) p[++m]=i,mu[i]=-1; 12 for(int j=1;j<=m&&p[j]*i<=n;++j){ 13 vis[i*p[j]]=1; 14 if(i%p[j]==0) break; 15 mu[i*p[j]]=-mu[i]; 16 } 17 } 18 for(int j=1;j<=m;++j) 19 for(int i=1;i*p[j]<=n;++i) 20 g[i*p[j]]+=mu[i]; 21 for(int i=1;i<=n;++i) 22 sum[i]=sum[i-1]+g[i]; 23 } 24 int main(){ 25 // freopen("testdata.in","r",stdin); 26 init(1e7); 27 int T;scanf("%d",&T); 28 while(T--){ 29 int n,m; 30 scanf("%d%d",&n,&m); 31 if(n>m) n^=m^=n^=m; 32 ans=0; 33 for(int l=1,r;l<=n;l=r+1){ 34 r=min(n/(n/l),m/(m/l)); 35 ans+=1ll*(n/l)*(m/l)*(sum[r]-sum[l-1]); 36 } 37 printf("%lld\n",ans); 38 } 39 return 0; 40 }
转载于:https://www.cnblogs.com/bztMinamoto/p/9688510.html
洛谷P2257 YY的GCD(莫比乌斯反演)相关推荐
- [洛谷P2257] YY的GCD (莫比乌斯反演)
YY的GCD 题目描述 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 kAc这种傻× ...
- 洛谷P2257 YY的GCD 莫比乌斯函数反演+线性筛
洛谷P2257 YY的GCD 标签 莫比乌斯反演 线性筛 前言 这题貌似和莫反没多大关系,就是用到了一个莫比乌斯函数的性质了,其他就是推公式,优化和式. 我的第一道懵逼反演-真的好难好难-而且套路特别 ...
- 洛谷P2257 YY的GCD
题目描述 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 kAc这种傻×必然不会了,于 ...
- 洛谷 P2257 YY的GCD
YY的GCD 题目描述 神犇YY虐完数论后给傻×kAc出了一题 给定\(N\), \(M\) ,求\(1 \le x \le N,1 \le y \le M\)且\(gcd(x, y)\)为质数的\( ...
- [Luogu P2257] YY的GCD (莫比乌斯函数)
题面 传送门:洛咕 Solution 推到自闭,我好菜啊 显然,这题让我们求: \(\large \sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)\in prime]\) 根 ...
- BZOJ 2820 YY的GCD 莫比乌斯反演
2820: YY的GCD Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y) ...
- 【bzoj2820】YY的GCD 莫比乌斯反演
题目描述 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必然不会了,于是 ...
- BZOJ 2820 YY的GCD 莫比乌斯反演
题意:链接 方法:莫比乌斯反演 解析: 这题跟上一篇博客有一点差别,当然我们能够考虑枚举素数这个大暴力.只是当你A掉这道题后发现正解?都将近5s时.就放弃了这个念头. 相同的式子我们能够直接搬过来.p ...
- bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛
Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...
- YY的GCD 莫比乌斯反演
---题面--- 题解: $ans = \sum_{x = 1}^{n}\sum_{y = 1}^{m}\sum_{i = 1}^{k}[gcd(x, y) == p_{i}]$其中k为质数个数 $$ ...
最新文章
- CMPP3.0 长短信实现方案
- 一文读懂除法溢出-使用汇编重定向0号中端(除法错误中断,比如,执行div指令产生的除法溢出)
- 源码编译安装Nginx
- spring作业_Spring和石英:多作业计划服务
- hdu 2034 - 集合操作
- 耐克人脸识别_狄耐克智能交通再结一位“老铁”——与力高地产达成战略合作协议!...
- python 服务器后台运行
- 什么是生物质发电?生物质发电有哪些方法?
- 【OpenGL ES】着色语言GLSL
- Vue-Lazyload学习文档
- linux看磁带内容命令,Linux下磁带管理命令
- jquery--拖拽效果
- 视频号日引流500+精准流量6大玩法,实现微信后端转化变现丨国仁网络资讯
- GetTickCount 得到时间进行比较计算遇到的异常
- mac,macbook 连接蓝牙耳机播放音乐断断续续
- 用小白鼠试验毒水问题
- BarTender软件中GS1-128条码如何制作?
- Microsoft office 2013找不到igx.dll解决方案
- html绘制坐标曲线,Word2010中怎么绘制曲线坐标图?
- 5G NR 随机接入RACH流程(7)--分类和重要RACH流程总结
热门文章
- java swing外文文献_外文文献及译文基于JAVA题库管理系统.doc
- python的规模有多大_Python项目可以有多大?最多可以有多少行代码?
- 彻底解决git中.gitignore文件失效原因及解决办法
- 【CodeForces - 471D 】【构造差分kmp】MUH and Cube Walls
- 使用threading多线程访问baidu,输出状态码及访问时间
- 这8个MySQL经典错误
- 在什么场合里你会用到消息队列?
- Javascript的块级作用域
- 在sublime text 3中让.vue文件的内容变成彩色
- How to support Specular-Glossiness in Three.js