【莫比乌斯反演】BZOJ2820 YY的GCD
题面在这里
与这道题类似。
先考虑枚举质数p,答案就是:
\sum_p \sum_d \mu(d) \lfloor \frac n {pd} \rfloor \lfloor \frac m {pd} \rfloor
设 T=pd T=pd,考虑枚举 T T,则有:
\sum_T^{min\{ n,m \}} \lfloor \frac n T \rfloor \lfloor \frac m T \rfloor \sum_{p|T} \mu\Big(\frac T p\Big)
如果能够预处理 ∑p|Tμ(Tp) \sum_{p|T} \mu\Big(\frac T p\Big)关于 T T的前缀和,前面的柿子就可以O(n√)O(\sqrt n)求解
其实直接暴枚 p p就好了
因为均摊每个质数是ln(n)ln(n)的,而质数的个数是 nln(n) \frac n {ln(n)}个
所以预处理是 O(n) O(n)的
示例程序:
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;const int maxn=10000005;
int tst,n,m,p[maxn],mu[maxn],t[maxn];
ll sum[maxn];
bool vis[maxn];
void get_mu(){int n=10000000;mu[1]=1;for (int i=2;i<=n;i++){if (!vis[i]) p[++p[0]]=i,mu[i]=-1;for (int j=1;j<=p[j]&&i*p[j]<=n;j++){vis[i*p[j]]=1;if (i%p[j]==0) {mu[i*p[j]]=0;break;}else mu[i*p[j]]=-mu[i];}}for (int i=1;i<=p[0];i++)for (int j=1;p[i]*j<=n;j++) t[p[i]*j]+=mu[j];for (int i=1;i<=n;i++) sum[i]=sum[i-1]+t[i];
}
ll get(int n,int m){if (n>m) swap(n,m);ll res=0;for (int T=1,lst=0;T<=n;T=lst+1){lst=min(n/(n/T),m/(m/T));res+=(sum[lst]-sum[T-1])*(n/T)*(m/T);}return res;
}
int main(){scanf("%d",&tst);get_mu();while (tst--){scanf("%d%d",&n,&m);printf("%lld\n",get(n,m));}return 0;
}
【莫比乌斯反演】BZOJ2820 YY的GCD相关推荐
- [ bzoj2820] YY的GCD
[ bzoj2820] YY的GCD Time Limit : 3000 ms Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<= ...
- bzoj2820 [bzoj2820]YY的GCD(线性素数筛+莫比乌斯反演)
求gcd(i,j)为质数的个数.即 ∑p∑i=1n∑j=1mgcd(i,j)==p \sum\limits_p\sum\limits_{i=1}^n\sum\limits_{j=1}^mgcd(i,j ...
- Bzoj-2820 YY的GCD Mobius反演,分块
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2820 题意:多次询问,求1<=x<=N, 1<=y<=M且gcd( ...
- bzoj2820: YY的GCD
题意 给定\(n,m(1 \leqslant n,m \leqslant 10000000)\),求\(1\leqslant x \leqslant n\), \(1 \leqslant y \leq ...
- [BZOJ2820]YY的GCD
题目大意: 对于给定的$n,m(n,m\leq10^7)$,求$为质数\displaystyle\sum_{x=1}^n\sum_{y=1}^m[\gcd(x,y)为质数]$. 思路: 设$p=\gc ...
- 【莫比乌斯反演】BZOJ2920-YY的GCD
[题目大意] 给定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 莫比乌斯反演
2820: YY的GCD Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y) ...
- 洛谷P2257 YY的GCD 莫比乌斯函数反演+线性筛
洛谷P2257 YY的GCD 标签 莫比乌斯反演 线性筛 前言 这题貌似和莫反没多大关系,就是用到了一个莫比乌斯函数的性质了,其他就是推公式,优化和式. 我的第一道懵逼反演-真的好难好难-而且套路特别 ...
最新文章
- 在SQL Server中如何转化长日期形式为短日期格式
- Nginx模块开发入门
- 第二部分面向对像基础第五章
- python利用集合的无重复性_python集合?
- 如何找到Fiori Launchpad tile所属的catalog id
- _UICreateCGImageFromIOSurface 使用API
- 网络拓扑发现原理研究
- Velocity - 单例还是非单例
- Agisoft Metashape Professional for Mac(三维建模软件)
- C语言什么是结构体?初步学习C语言结构体三部曲
- 语义表示——神经网络与深度学习
- python在虚拟解释器环境中使用pip安装第三方库出现Requirement already satisfied错误
- Endnote导入中文文献格式
- Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD
- C语言操作Excel表格
- newifi mini php,NewFi(newifi mini华硕固件)
- 抖音扫码跳转QQ群等外链源代码分享
- 苹果手机浏览器下拉会闪动的解决办法
- ssm+java企业公司产品分销商管理系统
- 解决windows10右下脚工具栏图标显示不正常问题
热门文章
- 2019最新整理JAVA面试题附答案
- 铁甲雄心机器人冠军_中英美三国机器人争霸!《铁甲雄心》冠军花落谁家?
- WPF系列教程(二十九):触发器Triggers、MultiTrggers、EventTrigger——属性触发器、多触发器、事件触发器
- python文件的第一行 #!/usr/bin/python3 是什么意思?
- label中的for属性
- 参与赢大奖!阿里云机器学习平台PAI助力开发者激发AIGC潜能
- kali操作系统安装
- java中结束进程的方法_java关闭Process
- JavaSE - 11 网络编程
- Eigen GO Ceres